Software Development Kit (SDK) and API Discussions

How to get result from NMSDK in json format or set content type to application/json

i am using NMSDK script  to get info of cluster,
but i want to get the output in json() format.

How can i set the Content type as "application/json"  

<snip>

import sys
import pprint
import json
sys.path.append("./NetApp")
from NaServer import *


s = NaServer("Array", 1 , 32)
s.set_server_type("FILER")
s.set_transport_type("HTTPS")
s.set_port(443)
s.set_style("LOGIN")
s.set_admin_user("admin", "password@123")
api = NaElement("cluster-identity-get")

xi = NaElement("desired-attributes")
api.child_add(xi)


xi1 = NaElement("cluster-identity-info")
xi.child_add(xi1)

xi1.child_add_string("cluster-contact","<cluster-contact>")
xi1.child_add_string("cluster-location","<cluster-location>")
xi1.child_add_string("cluster-name","<cluster-name>")
xi1.child_add_string("cluster-serial-number","<cluster-serial-number>")
xi1.child_add_string("cluster-uuid","<cluster-uuid>")
xi1.child_add_string("rdb-uuid","<rdb-uuid>")

xo = s.invoke_elem(api)
print (type(xo))
if (xo.results_status() == "failed") :
print ("Error:\n")
print (xo.sprintf())
sys.exit (1)


print ("Received:\n")
data = xo.sprintf()
print (data)

<snip>

12 REPLIES

Re: How to get result from NMSDK in json format or set content type to application/json

NMSDK recieves data in the XML format which is similar to JSON. They have key value pair, can be nested into other elements arbitarily. 

Re: How to get result from NMSDK in json format or set content type to application/json

yes , i know

i want to know is there any way we can set content-type

Re: How to get result from NMSDK in json format or set content type to application/json

No, NMSDK only supports XML like formatting for the data getting sent and being recieved.

Re: How to get result from NMSDK in json format or set content type to application/json

Did you try this? 

 

obj = xmltodict.parse(xo.sprintf())
jd = json.dumps(obj)
a = Response(jd, content_type='application/json')

Re: How to get result from NMSDK in json format or set content type to application/json

a = Response(jd, content_type='application/json')----> what us Response here??

Re: How to get result from NMSDK in json format or set content type to application/json

from flask import Response

 

Re: How to get result from NMSDK in json format or set content type to application/json

No not working.

because xo.sprinf() return unicode type data.

and when we use below code

<snip>

obj = xmltodict.parse(xo.sprintf())
jd = json.dumps(obj)
a = Response(jd, content_type='application/json')
pprint.pprint(a.data)----> it return in dict format, but its data type is <str>
print data["cluster-uuid"] ---> so when try to access by it key it gives error

<snip>

Data i get: 

'{"results": {"@status": "passed", "attributes": {"cluster-identity-info": {"cluster-contact": null, "cluster-location": "B", "cluster-name": "IA", "cluster-serial-number": "1--7868", "cluster-uuid": "----uuid----", "rdb-uuid": "---uuid---"}}}}'

 

<error>
print data["cluster-uuid"]
TypeError: string indices must be integers, not str

<error>

Re: How to get result from NMSDK in json format or set content type to application/json

Try to add json loads. 

 

obj = xmltodict.parse(xo.sprintf())
jd = json.dumps(obj)
jl = json.loads(jd)
a = Response(jl, content_type='application/json')

Re: How to get result from NMSDK in json format or set content type to application/json

yes, now it is giving json output, but only class instance

when i try to get data also it is giving instance details only.

 

example:

obj = xmltodict.parse(xo.sprintf())
jd = json.dumps(obj)
jl = json.loads(jd)
a = Response(jl, content_type='application/json')
#pprint.pprint(dir(a))

pprint.pprint(a)--> <Response likely-streamed [200 OK]>
print a.get_json-->  <bound method Response.get_json of <Response likely-streamed [200 OK]>>
print a.is_json---> True
print a._get_data_for_json--> <bound method Response._get_data_for_json of <Response likely-streamed [200 OK]>>
 
 
what i want is json data.
Forums