Maybe this ruby implementation can help you:
def get_data_interfaces(primary_or_secondary,protocol)
data_interfaces=[]
xcommand = NaElement.new("net-interface-get-iter")
netattribs_desired = NaElement.new("desired-attributes")
interfaceinfo_desired = NaElement.new("net-interface-info")
vserver_name_desired = NaElement.new("vserver")
dataprotocols_desired = NaElement.new("data-protocols")
dataprotocols_array_desired = NaElement.new("data-protocol")
dataprotocols_desired.child_add(dataprotocols_array_desired)
administrativestatus_desired = NaElement.new("administrative-status")
interfaceinfo_desired.child_add(vserver_name_desired)
interfaceinfo_desired.child_add(dataprotocols_desired)
interfaceinfo_desired.child_add(administrativestatus_desired)
netattribs_desired.child_add(interfaceinfo_desired)
netattribs_query = NaElement.new("query")
interfaceinfo_query = NaElement.new("net-interface-info")
svm = ""
if primary_or_secondary.eql?("primary") then
svm = @primary_svm
else
svm = @secondary_svm
end
interfaceinfo_query.child_add_string("vserver",svm)
dataprotocols_query = NaElement.new("data-protocols")
dataprotocols_query.child_add_string("data-protocol",protocol)
interfaceinfo_query.child_add(dataprotocols_query)
netattribs_query.child_add(interfaceinfo_query)
xcommand.child_add(netattribs_desired)
xcommand.child_add(netattribs_query)
output = @connection.invoke_elem(xcommand)
if (output.results_status() == "failed") then
@logger.fatal "#{@config_name}: Unable to connect to #{svm} for getting data interfaces: #{output.results_reason()}"
return nil
end
result_count = output.child_get_int("num-records")
if result_count>0 then
info_interfaces = output.children_get()
info_interfaces.each { |interface_element_info|
if interface_element_info.class.name.eql?("NaElement") then
interface_info = interface_element_info.children_get()
interface_info.each{|interface|
data_interface = Hash.new
data_interface["interface-name"] = interface.child_get_string("interface-name")
data_interface["administrative-status"] = interface.child_get_string("administrative-status")
data_interface["data-protocol"] = protocol
data_interfaces.push(data_interface)
}
end
}
else
end # result_count>0 then
@logger.info "#{@config_name}: Retrieved data interfaces from #{svm} (#{primary_or_secondary}): #{data_interfaces.inspect}"
return data_interfaces
end # get_data_interfaces(primary_or_secondary)