Effective December 3, NetApp adopts Microsoft’s Business-to-Customer (B2C) identity management to simplify and provide secure access to NetApp resources.
For accounts that did not pre-register (prior to Dec 3), access to your NetApp data may take up to 1 hour as your legacy NSS ID is synchronized to the new B2C identity.
To learn more, read the FAQ and watch the video.
Need assistance? Complete this form and select “Registration Issue” as the Feedback Category.

Software Development Kit (SDK) and API Discussions

8.3.0 NMSDK Unable to find API: aggr-list-info

howd

Ultimately, I want a list of volumes on the cluster.  I've tried using several of the classes available in the ontap-api-8.3.jar, but with mixed results.  Here is snippet of code I've tried using to get a list of AggrInfo objects from a cluster:

Protocol protocol = Protocol.HTTP;
try { ApiRunner runner = new ApiRunner(ApiTarget.builder() .withHost("192.168.0.10") .withUserName("admin") .withPassword("password1!") .withTargetType(TargetType.FILER) .useProtocol(protocol) .build()); AggrListInfoRequest aggrLiInReq = new AggrListInfoRequest(); AggrListInfoResponse aggrLiInResp = runner.run(aggrLiInReq); List<AggrInfo> aggrInfoList = aggrLiInResp.getAggregates(); for (AggrInfo aggrInfo : aggrInfoList){ aggrInfo.getVolumeCount(); } } catch(Exception e) {; e.printStackTrace(); }

Here is the error I am encountering

com.netapp.nmsdk.ApiExecutionException: Unable to find API: aggr-list-info

I'm confused.  The AggrListInfoResponse class is in the ontap-api-8.3.jar.  How can the api not be avaliable?

 

Can someone please help me with this?

1 REPLY 1

michael_england

I'm no using APIRunner but here are a couple of code snippets for you:

 

Aggregate List (needs to be done at the cluster level)

 

private NaElement request, response;

NaServer server = new NaServer("cluster_ip");
server.setTransportType(NaServer.TRANSPORT_TYPE_HTTPS);
server.setPort(443);
server.setStyle(NaServer.STYLE_LOGIN_PASSWORD);
server.setAdminUser("username", "password");

request = new NaElement("aggr-get-iter");
response = server.invokeElem(request);
NaElement aggrAttributes = response.getChildByName("attributes-list");

@SuppressWarnings("unchecked")
List<NaElement> aggrList = aggrAttributes.getChildren();
for (NaElement aggr : aggrList) {
     String aggrName = aggr.getChildContent("aggregate-name");
}

 

Volume List (needs to be done at the vserver level)

 

private NaElement request, response;

NaServer server = new NaServer("vserver_ip");
server.setTransportType(NaServer.TRANSPORT_TYPE_HTTPS);
server.setPort(443);
server.setStyle(NaServer.STYLE_LOGIN_PASSWORD);
server.setAdminUser("username", "password");

ArrayList<String> volumeList = new ArrayList<String>();
request = new NaElement("volume-get-iter");
request.addNewChild("max-records",  "4294967295");
NaElement desiredAttributes = new NaElement("desired-attributes");
NaElement volAttributes = new NaElement("volume-attributes");
NaElement volIDAttributes = new NaElement("volume-id-attributes");
NaElement name = new NaElement("name");
volIDAttributes.addChildElem(name);
volAttributes.addChildElem(volIDAttributes);
desiredAttributes.addChildElem(volAttributes);
request.addChildElem(desiredAttributes);
response = server.invokeElem(request);

@SuppressWarnings("unchecked")
List<NaElement> attributes = response.getChildByName("attributes-list").getChildren();
for (NaElement attribute : attributes) {
        // because the response is nested within volume-id-attributes, we need to get children again
	@SuppressWarnings("unchecked")
	List<NaElement> volIDs = attribute.getChildren();
	for (NaElement id : volIDs) {
		volumeList.add(id.getChildContent("name"));
	}
}

 

I'm splicing those together from other bits of code so no promises it'll just run but it should be close.

 

 

Announcements
NetApp on Discord Image

We're on Discord, are you?

Live Chat, Watch Parties, and More!

Explore Banner

Meet Explore, NetApp’s digital sales platform

Engage digitally throughout the sales process, from product discovery to configuration, and handle all your post-purchase needs.

NetApp Insights to Action
I2A Banner
Public