Legacy Product Discussions

Netapp SMI Agent - WBEM (XMLERROR: in performBatchOperations)

GORAN_HAFNER
3,310 Views

Hi,

We use NetApp SMI Agent NetApp_Array-WS32-10.30.0G00.0001.exe, to get data from our IBM DS4700 storage.

We use java WBEM Service (http://wbemservices.sourceforge.net/), to connect to NetApp agent, and get storage data.

Problem:

When we get data by:

javax.wbem.client.BatchCIMClient

we get error:

XMLERROR:

java.io.IOException

     at javax.wbem.client.adapter.http.CIMClientXML.call(CIMClientXML.java:391)

     at javax.wbem.client.adapter.http.CIMClientXML.getResponse(CIMClientXML.java:510)

     at javax.wbem.client.adapter.http.CIMClientXML.getMultiResponse(CIMClientXML.java:571)

     at javax.wbem.client.adapter.http.CIMClientXML.performOperations(CIMClientXML.java:1365)

     at javax.wbem.client.CIMClient.performBatchOperations(CIMClient.java:2881)

Example code (P.S. error occur on bold line of code 😞


try {

BatchCIMClient batchClient = new BatchCIMClient();
ArrayList objEnumIDList = new ArrayList();
            
/**
  * enum Instance
  */
// Get all Storage instances.
int iEnumIDA01 = batchClient.enumerateInstances(new CIMObjectPath("LSISSI_StorageSystem"), false, false, false, false, null);
objEnumIDList.add(new Integer(iEnumIDA01));
// Get all  Storage Controller instances            
int iEnumIDA02 = batchClient.enumerateInstances(new CIMObjectPath("LSISSI_StorageProcessorSystem"), false, false, false, false, null);           
objEnumIDList.add(new Integer(iEnumIDA02));
/**
  * enum Instance Names
  */
// Get all StorageSystem to StorageProcessor (Controller) connections
int iEnumIDB01 = batchClient.enumerateInstanceNames(new CIMObjectPath("LSISSI_ComponentCS"));           
objEnumIDList.add(new Integer(iEnumIDB01));

// Making the CIMOM call as a batched operation.
BatchResult batchRes = cimClient.performBatchOperations(batchClient)}

}
catch (CIMException e)
{           
        e.printStackTrace();
}

Do you have advice what could be problem?

P.S. when we use:

javax.wbem.client.CIMClient  to get one Instance by one instance it's working but this in not the way we should use it when get huge amount of data from SMI agent.

Thanks advanced for help.

Best Regards,

Goran Hafner

1 ACCEPTED SOLUTION

khulques
3,310 Views

Hi Goran - I wrote a little client application and was able to duplicate the problem.  While studying the root cause I discovered that OpenPegasus does not support batch requests.  Unfortunately, OpenPegasus is the only CIMOM we certify and deliver with the provider.

The provider maintains an in-memory cache of storage system objects so it can promptly return data to client applications.  Are serial calls to the provider not adequate?  Or is it a matter of the existing client application that is designed to use batch operations?

+Kevin

View solution in original post

2 REPLIES 2

khulques
3,311 Views

Hi Goran - I wrote a little client application and was able to duplicate the problem.  While studying the root cause I discovered that OpenPegasus does not support batch requests.  Unfortunately, OpenPegasus is the only CIMOM we certify and deliver with the provider.

The provider maintains an in-memory cache of storage system objects so it can promptly return data to client applications.  Are serial calls to the provider not adequate?  Or is it a matter of the existing client application that is designed to use batch operations?

+Kevin

GORAN_HAFNER
3,310 Views

Hi Kevin,

You were right, it was matter of existing client application, but now I change business logic to work with CIMClient instead of BatchCIMClient, and it's working well, because in test environment I have one Storage, but will see in bigger environment how fast will be this serial communication.

Thank you for answer and this information about OpenPegasus and NetApp Agent.

Best Regards,

Goran Hafner

Public