<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Simple wrapper framework around Python NMSDK in Software Development Kit (SDK) and API Discussions</title>
    <link>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Simple-wrapper-framework-around-Python-NMSDK/m-p/119426#M1934</link>
    <description>&lt;P&gt;Simple announcement :&lt;/P&gt;&lt;P&gt;&lt;A href="http://dev.tynsoe.org/ybizeul/netapp-scripts/tree/master" target="_blank"&gt;http://dev.tynsoe.org/ybizeul/netapp-scripts/tree/master&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Feel free to comment if you are interested in the initiative.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT size="3"&gt;Purpose&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;NetApp Manageability SDK (NMSDK) is provided by NetApp to let third party ddevelopment and scripts to interract with NetApp storage components (cDOT clusters, 7-mode controllers, OnCommand Unifued Manager, DFM).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The SDK provided by NetApp is essentially a wrapper around the XML protocol used to exchange informations over HTTP(s). It means you essentially have to build a structure of NaElements (in essence representing XML nodes) implementing the required elements and children documented for each call.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It leads to code hard to read and maintain, mostly spent in building NaElements and stick them together instead of performing straightforward API calls.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;NetAppObject.py&lt;/STRONG&gt;&amp;nbsp;is a module that lets you simplify your code and develop more efficiently with NetApp APIs. For example, to get the name of a NetApp cluster, the traditional way is the following code :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;"s"&lt;SPAN&gt;&amp;nbsp;is a previously created NaServer object&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="n"&gt;cluster_identity_get&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;NaElement&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-identity-get"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;desired_attributes&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;NaElement&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"desired-attributes"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;NaElement&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-name"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="n"&gt;cluster_identity_get&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;child_add&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="n"&gt;desired_attributes&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;desired_attributes&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;child_add&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="n"&gt;result&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;s&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;invoke_elem&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="n"&gt;cluster_identity_get&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;result&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;child_get&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"attributes"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;child_get&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-identity-info"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;child_get_string&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-name"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="k"&gt;print&lt;/SPAN&gt; &lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;Using NetAppObject:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="n"&gt;result&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;NetAppObject&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;invoke&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="n"&gt;s&lt;/SPAN&gt;&lt;SPAN class="p"&gt;,{&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-identity-get"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;:&lt;/SPAN&gt; &lt;SPAN class="p"&gt;{&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"desired-attributes"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;:&lt;/SPAN&gt; &lt;SPAN class="p"&gt;{&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-name"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;}}})&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;result&lt;/SPAN&gt;&lt;SPAN class="p"&gt;[&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"results"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;][&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"attributes"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;][&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-identity-info"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;][&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-name"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;]&lt;/SPAN&gt;
&lt;SPAN class="k"&gt;print&lt;/SPAN&gt; &lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Or even easier:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="n"&gt;result&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;Cluster&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="n"&gt;s&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="k"&gt;print&lt;/SPAN&gt; &lt;SPAN class="n"&gt;result&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 19 May 2016 04:08:34 GMT</pubDate>
    <dc:creator>yannb</dc:creator>
    <dc:date>2016-05-19T04:08:34Z</dc:date>
    <item>
      <title>Simple wrapper framework around Python NMSDK</title>
      <link>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Simple-wrapper-framework-around-Python-NMSDK/m-p/119426#M1934</link>
      <description>&lt;P&gt;Simple announcement :&lt;/P&gt;&lt;P&gt;&lt;A href="http://dev.tynsoe.org/ybizeul/netapp-scripts/tree/master" target="_blank"&gt;http://dev.tynsoe.org/ybizeul/netapp-scripts/tree/master&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Feel free to comment if you are interested in the initiative.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT size="3"&gt;Purpose&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;NetApp Manageability SDK (NMSDK) is provided by NetApp to let third party ddevelopment and scripts to interract with NetApp storage components (cDOT clusters, 7-mode controllers, OnCommand Unifued Manager, DFM).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The SDK provided by NetApp is essentially a wrapper around the XML protocol used to exchange informations over HTTP(s). It means you essentially have to build a structure of NaElements (in essence representing XML nodes) implementing the required elements and children documented for each call.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It leads to code hard to read and maintain, mostly spent in building NaElements and stick them together instead of performing straightforward API calls.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;NetAppObject.py&lt;/STRONG&gt;&amp;nbsp;is a module that lets you simplify your code and develop more efficiently with NetApp APIs. For example, to get the name of a NetApp cluster, the traditional way is the following code :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;"s"&lt;SPAN&gt;&amp;nbsp;is a previously created NaServer object&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="n"&gt;cluster_identity_get&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;NaElement&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-identity-get"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;desired_attributes&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;NaElement&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"desired-attributes"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;NaElement&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-name"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="n"&gt;cluster_identity_get&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;child_add&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="n"&gt;desired_attributes&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;desired_attributes&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;child_add&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="n"&gt;result&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;s&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;invoke_elem&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="n"&gt;cluster_identity_get&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;result&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;child_get&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"attributes"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;child_get&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-identity-info"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;child_get_string&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-name"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="k"&gt;print&lt;/SPAN&gt; &lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;Using NetAppObject:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="n"&gt;result&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;NetAppObject&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;invoke&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="n"&gt;s&lt;/SPAN&gt;&lt;SPAN class="p"&gt;,{&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-identity-get"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;:&lt;/SPAN&gt; &lt;SPAN class="p"&gt;{&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"desired-attributes"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;:&lt;/SPAN&gt; &lt;SPAN class="p"&gt;{&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-name"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;}}})&lt;/SPAN&gt;
&lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;result&lt;/SPAN&gt;&lt;SPAN class="p"&gt;[&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"results"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;][&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"attributes"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;][&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-identity-info"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;][&lt;/SPAN&gt;&lt;SPAN class="s"&gt;"cluster-name"&lt;/SPAN&gt;&lt;SPAN class="p"&gt;]&lt;/SPAN&gt;
&lt;SPAN class="k"&gt;print&lt;/SPAN&gt; &lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Or even easier:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="n"&gt;result&lt;/SPAN&gt; &lt;SPAN class="o"&gt;=&lt;/SPAN&gt; &lt;SPAN class="n"&gt;Cluster&lt;/SPAN&gt;&lt;SPAN class="p"&gt;(&lt;/SPAN&gt;&lt;SPAN class="n"&gt;s&lt;/SPAN&gt;&lt;SPAN class="p"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="k"&gt;print&lt;/SPAN&gt; &lt;SPAN class="n"&gt;result&lt;/SPAN&gt;&lt;SPAN class="o"&gt;.&lt;/SPAN&gt;&lt;SPAN class="n"&gt;cluster_name&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 19 May 2016 04:08:34 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Simple-wrapper-framework-around-Python-NMSDK/m-p/119426#M1934</guid>
      <dc:creator>yannb</dc:creator>
      <dc:date>2016-05-19T04:08:34Z</dc:date>
    </item>
    <item>
      <title>Re: Simple wrapper framework around Python NMSDK</title>
      <link>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Simple-wrapper-framework-around-Python-NMSDK/m-p/119465#M1943</link>
      <description>&lt;P&gt;I'm interested. I was previously a Perl hacker but in more recent NetApp automation efforts I have fallen into the PowerShell and NetApp PowerShell Toolkit groove (mostly, but not always, under the control of WFA). It is on my bucket list to get better with the NMSDK and Python. I've not played with NMSDK yet (in any language) and your example shows me how complex it can be. Your framework looks like a much better way way to marry Python and NMSDK. So count me in as interested ... I just need to find the time and the right project. In the meantime I'll have a look.&lt;/P&gt;</description>
      <pubDate>Thu, 04 Aug 2016 17:23:44 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Simple-wrapper-framework-around-Python-NMSDK/m-p/119465#M1943</guid>
      <dc:creator>dkorns</dc:creator>
      <dc:date>2016-08-04T17:23:44Z</dc:date>
    </item>
    <item>
      <title>Re: Simple wrapper framework around Python NMSDK</title>
      <link>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Simple-wrapper-framework-around-Python-NMSDK/m-p/146203#M2851</link>
      <description>&lt;P&gt;I am very much interest to learn automation using python but not where I need to start&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 26 Jan 2019 01:29:50 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Simple-wrapper-framework-around-Python-NMSDK/m-p/146203#M2851</guid>
      <dc:creator>Manikandanganesan</dc:creator>
      <dc:date>2019-01-26T01:29:50Z</dc:date>
    </item>
    <item>
      <title>Re: Simple wrapper framework around Python NMSDK</title>
      <link>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Simple-wrapper-framework-around-Python-NMSDK/m-p/146877#M2864</link>
      <description>&lt;P&gt;Very interested in it! How it comes?&lt;/P&gt;</description>
      <pubDate>Fri, 01 Mar 2019 07:25:54 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Simple-wrapper-framework-around-Python-NMSDK/m-p/146877#M2864</guid>
      <dc:creator>chibata</dc:creator>
      <dc:date>2019-03-01T07:25:54Z</dc:date>
    </item>
  </channel>
</rss>

