Software Development Kit (SDK) and API Discussions

Raid TEC get-aggr-iter

michael_england
3,782 Views

I seem to have run into a problem where I can't scan any raid tec aggregates using NMSDK.  The call I'm making against the cluster goes like this:

 

NaServer server = net NaServer("mycluster");

naServer.setApiVersion(1, 100);

naServer.setTransportType(NaServer.TRANSPORT_TYPE_HTTPS);

naServer.setPort(443);

naServer.setStyle(NaServer.STYLE_LOGIN_PASSWORD);

naServer.setAdminUser("myuser", "mypassword");

 

NaElement request = new NaElement("aggr-get-iter");

response = server.invokeElem(request);

System.out.println(response.toPrettyString("aggr-get-iter");

 

And it works fine; except it has no output for any aggregate that's raid-tec.  Has anyone run into this?

 

I've upgrade to manageontap-5.6.jar which is the latest I could find with the same problem.  I've also tried different versions of setApiVersion, all with the same problem.

1 ACCEPTED SOLUTION

michael_england
3,738 Views

Super big thanks for the note back, and so quickly.  Given your success, you prompted me to try a couple of things, first using zedi, which showed the exact same problem, and to try more clusters.  I've got 3 with raid tec all running ontap 9.0P1.  Two of them fail, and one works just fine, so that's no good, however, it did lead me to the actual problem.  The raid tec aggregates are new, and on two clusters, they just so happen to be the 21st+ aggregates.  By default, aggr-get-iter returns only 20 aggregates.  I added a max-records and it's all good.

 

If anyone else happens to run into the problem, the solution is shown below:

 

request = new NaElement("aggr-get-iter");

request.addNewChild("max-records", "1000");

response = server.invokeElem(request);

View solution in original post

3 REPLIES 3

asulliva
3,760 Views

What version of ONTAP are you using?

 

For what it's worth, I'm not having any trouble with PowerShell (which uses the .NET SDK) or Python.

 

Get-NcAggr -Query @{ AggrRaidAttributes = @{ RaidType = "raid_tec" } }

 

 

from NaServer import *

server = NaServer("my.cluster", 1, 100)
server.set_admin_user("admin", "password")
server.set_transport_type("HTTP")

response = server.invoke("aggr-get-iter").child_get("attributes-list").children_get()

for a in response:
    print "%s uses %s" % (a.child_get_string("aggregate-name"), a.child_get('aggr-raid-attributes').child_get_string('raid-type'))

Have you looked at the raw ZAPI response to validate that nothing is being returned?

 

Andrew

If this post resolved your issue, please help others by selecting ACCEPT AS SOLUTION or adding a KUDO.

michael_england
3,739 Views

Super big thanks for the note back, and so quickly.  Given your success, you prompted me to try a couple of things, first using zedi, which showed the exact same problem, and to try more clusters.  I've got 3 with raid tec all running ontap 9.0P1.  Two of them fail, and one works just fine, so that's no good, however, it did lead me to the actual problem.  The raid tec aggregates are new, and on two clusters, they just so happen to be the 21st+ aggregates.  By default, aggr-get-iter returns only 20 aggregates.  I added a max-records and it's all good.

 

If anyone else happens to run into the problem, the solution is shown below:

 

request = new NaElement("aggr-get-iter");

request.addNewChild("max-records", "1000");

response = server.invokeElem(request);

asulliva
3,702 Views

I posted an example of using the -iter APIs with Python here if you're interested.  Hope that helps!

 

Andrew

If this post resolved your issue, please help others by selecting ACCEPT AS SOLUTION or adding a KUDO.
Public