{ "info": { "author": "yfauser", "author_email": "yfauser@yahoo.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Libraries" ], "description": "nsxramlclient\n=============\n\nThis Python based client for NSX for vSphere 6.x gets its API structure\ninformation (e.g. URLs, parameters, schema, etc.) from a RAML file which\ndescribes the NSX for vSphere REST API. It has been developed and tested\nfor use with VMware NSX for vSphere 6.x.\n\nThe latest version of the NSX for vSphere 6.x RAML file can be found at\nhttp://github.com/vmware/nsxraml\n\nNOTE:\n^^^^^\n\nPlease read the bellow Version information. The 2.0 Version of\nnsxramlclient is needed to support the new format of the nsxraml spec on\nhttp://github.com/vmware/nsxraml that introduced a breaking change in\nthe way schemas are handled. If you are using the 1.x version of\nnsxramlclient you will need to use the 6.1.4, 6.1.6 or 6.2.2 versions of\nthe nsx raml spec. In the 2.0 version the method\n``extract_resource_body_schema`` was replaced with\n``extract_resource_body_example``\n\nAlso, in the NSXv 6.3 version of the nsx raml spec XML Comments and pre-filled\ncontent was introduced in the RAML spec to improve readability of the created\nHTML and PDF artifacts. This change may break existing code,\nso version 2.0.6 of the nsxramlclient now removes any XML comments and\npre-filled content.\n\nVersion History\n===============\n\nVersion 2.0.7\n^^^^^^^^^^^^^\nNSX-v 6.4 introduced a new response code 202 for the controller creation API (Issue [#22]). This version of nsxramlclient accepts 202\nas a successful response code\n\nVersion 2.0.6\n^^^^^^^^^^^^^\nThis version of the nsxramlclient will now delete any XML comments found in the body content examples in the nsxraml spec.\nPreviously nsxramlclient ran into a traceback if XML comments were used. Also, in this version nsxramlclient by default will remove all pre-filled content in the body content examples. This is needed because of a change in the nsxraml spec where the focus is now more shifting towards documentation, and pre-filled content helps in terms of readability in the examples.\nThis behaviour can be controlled by using the remove_content= parameter in the extract_resource_body_example method.\n\nVersion 2.0.5\n^^^^^^^^^^^^^\n\nAdded fail\\_mode='' option in NsxClient to raise an exception instead of\nsys.exit when setting fail\\_mode='raise', or continue without an\nexception if set to fail\\_mode='continue'. Default is still\nfail\\_mode='exit' to preserve backwards compatibility. Read the changed\n*'Create a session object'* section for mode details\n\nVersion 2.0.3\n^^^^^^^^^^^^^\n\nChange in the dependencies to include 'oyopenssl' to make nsxramlclient\neasier to install on Windows\n\nVersion 2.0.2\n^^^^^^^^^^^^^\n\nChange in the lxml dependency. We are now mandating lxml 3.6.0 or lower\nbecause of installation issues seen on Windows with lxml 3.6.1.\n\nVersion 2.0.1\n^^^^^^^^^^^^^\n\nThis version of nsxramlclient added support for repeating keys in the\nXML body without nested structure bellow. Before v2.0.1 nsxramlclient\nonly supports repeating keys in the XML body if these repeating key\nthemself hold multiple keys bellow them (nesting). This patch adds the\nsupport for repeating keys that only hold a values bellow them and no\nnested structure. This was needed to support the API call to create\nsecondary IP Addresses on ESG router interfaces\n\nVersion 2.0\n^^^^^^^^^^^\n\nThis version of nsxramlclient is needed to support the new format of the\nnsxraml spec on http://github.com/vmware/nsxraml that introduced a\nbreaking change in the way schemas are handled. In the new NSX-v RAML\nspec schemas are now real schemas that can be used to check the\ncorrectness of your XML document. In the earlier versions the schema was\nused to return an XML example as a python Dict. The new way of\nretrieving the XML example dict is by using the new method introduced in\nthe 2.0 version named ``extract_resource_body_example``\n\nVersion 1.0.4\n^^^^^^^^^^^^^\n\nThis release introduces new helper methods:\n\n``read_all_pages``: This Method reads all pages from the API Get for the\n['virtualWires', 'pagedEdgeList'] displayNames. This e.g. helps to\ncollect all logical switches present in the system without having to\nknow the needed page file size\n\n``normalize_list_return``: There are API calls in NSX-v were you are\ngetting a None object if no Object is present, a Dict type when only one\nObject is present, and a List of Dicts when more than one Object is\npresent. E.g. for the retrieval of logical switches. When passing the\nAPI return to this function it will normalize the return to be a list.\nIf the input is a None Object (no Object exists in NSX-v) an empty list\nis return. When one Object is found, a List with the one Dict is\nreturned, when the input is a list, it is returned back unmodified\n\nVersion 1.0.2 and 1.0.1\n^^^^^^^^^^^^^^^^^^^^^^^\n\nInitial versions\n\nHow to install nsxramlclient\n============================\n\nThe following install instructions are based on Ubuntu 14.04 LTS, but\ninstallations on other Linux distributions or on the Apple MacOS should\nbe relatively similar and should be familiar to those familiar with\nPython.\n\nCheck whether pip is installed\n\n.. code:: sh\n\n pip --version\n\nIf pip is not installed, install it with apt-get or the package manager\nappropriate for your operating system.\n\n.. code:: sh\n\n sudo apt-get update\n sudo apt-get -y install python-pip\n\nNow you can use pip to install the nsx raml client\n\n.. code:: sh\n\n sudo pip install nsxramlclient\n\nIn some cases the installation may fail because of missing dependencies.\nYou may see the following message and will have to install the required\npackages\n\n::\n\n ERROR: /bin/sh: 1: xslt-config: not found\n ** make sure the development packages of libxml2 and libxslt are installed **\n\nThis example shows installing the dependencies using the apt package\nmanager and the apt-get command. Once dependencies are installed you can\nretry the pip installation of the nsxramlclient shown above.\n\n.. code:: sh\n\n sudo apt-get install build-essential libssl-dev libffi-dev libxml2-dev libxslt-dev python-dev zlib1g-dev\n\nAlso sometimes you might run into the issue of missing Python OpenSSL on\nyour Ubuntu machine. In this case you will see the following error\nmessage when importing nsxramlclient.client:\n\n.. code:: sh\n\n ImportError: No module named OpenSSL.SSL\n\nif you encounter this, simply install the package python-openssl\nmanually:\n\n.. code:: sh\n\n sudo apt-get install python-openssl\n\nExamples on how to use nsxramlclient\n====================================\n\nCreate a session object\n^^^^^^^^^^^^^^^^^^^^^^^\n\nIt is required to create a session object with which you will interact\nwith the NSX REST API. This session object will then expose the create,\nread, update and delete (CRUD) methods of each NSX object as well as\nsome helper methods that will be useful.\n\n.. code:: python\n\n from nsxramlclient.client import NsxClient\n\n nsxraml_file = '/raml/nsxraml/nsxvapiv614.raml'\n nsxmanager = 'nsxmanager.invalid.org'\n nsx_username = 'admin'\n nsx_password = 'vmware'\n\n client_session = NsxClient(nsxraml_file, nsxmanager, nsx_username,\n nsx_password, debug=False, fail_mode='raise')\n\nThe NsxClient class has the following initialization parameters:\n\n.. code:: python\n\n \"\"\"\n :param raml_file:\n This mandatory parameter is the RAML file used as the basis of all URL\n compositions. It allows the client to extract the body schema and convert the schema into python dictionaries.\n\n :param nsxmanager:\n This mandatory parameter is either the hostname or IP Address of the NSX Manager appliance.\n\n :param nsx_username:\n This mandatory parameter is the username on NSX Manager used for authentication to the NSX REST API running on the NSX Manager.\n\n :param nsx_password:\n This mandatory parameter is the password of the user used for authentication to the NSX REST API running on the NSX Manager.\n\n :param debug: Optional:\n If set to True, the client will print extensive HTTP session information to stdout.\n Default: False\n\n :param verify: Optional:\n If set to True, the client will strictly verify the certificate passed by NSX Manager. It is recommmended in all production environments to use signed certificates for the NSX REST API. Please refer to the NSX for vSphere documentation for information on how to convert from the self-signed certificate to a signed certificate.\n Default: False\n\n :param suppress_warnings: Optional:\n If set to True, the client will print out a warning if NSX Manager uses a self signed certificate.\n Default: True\n\n :param fail_mode: Optional:\n If not set, the client will exit using sys.exit when receiving any error status code from NSX like 400.\n If fail_mode is set to 'raise', the exception nsxramlclient.exceptions.NsxError will be raised with status\n being the HTTP status code received and msg being the error message returned by NSX in the body. If set to\n 'continue', no error will be raised, and the status and body is returned like in successful cases.\n Default: 'exit'\n\n :return: Returns a NsxClient Session Object\n \"\"\"\n\nAfter you initialized a session object you have access to the following\nmethods:\n\n- create: Sends a HTTP POST to NSX Manager. More details will follow\n later in this readme.\n\n- read: Sends a HTTP GET to NSX Manager\n\n- update: Sends a HTTP PUT to NSX Manager\n\n- delete: Sends a HTTP DELETE to NSX Manager\n\n- view\\_response: Each of the above methods returns a Python\n OrderedDictionary with the HTTP Status code, location header, NSX\n Object Id, eTag Header and Body. This method outputs the OrderedDict\n in human readable text to stdout.\n\n- extract\\_resource\\_body\\_schema: DEPRECATION WARING: Use the method\n extract\\_resource\\_body\\_schema. In future version this will be\n removed This method will retrieve the body schema from the RAML File\n (if the method has a body schema like most create methods), and will\n return a template python dictionary that can be used to construct\n subsequent API calls.\n\n- extract\\_resource\\_body\\_example: This method will retrieve the body\n example from the RAML File (if the method has a body example like\n most create methods), and will return a template python dictionary\n that can be used to construct subsequent API calls.\n\n- view\\_resource\\_body\\_schema: This method retrieves the body schema\n from the RAML file and outputs it to stdout as a pretty printed XML\n document.\n\n- view\\_resource\\_body\\_example: This method retrieves the body example\n from the RAML file and outputs it to stdout as a pretty printed XML\n document.\n\n- view\\_body\\_dict: This method takes a body dictionary (any python\n dictionary), and outputs it in a human readable format to stdout.\n\n- view\\_resource\\_display\\_names: This method outputs displayNames and\n descriptions of all resources in the RAML File with their associated\n URI & query parameters, additional headers, and what methods are\n supported.\n\nUse of the create, read, update and delete methods\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code:: python\n\n In [1]: client_session.read('vCenterStatus')\n Out[2]: OrderedDict([('status', 200), ('body', {'vcConfigStatus': {'connected': 'true', 'lastInventorySyncTime': '1440444721014'}}), ('location', None), ('objectId', None), ('Etag', None)])\n\nThe create, read, update and delete methods return a Python OrderedDict\nwith the following key/value pairs: - status: The HTTP status code\nreturned as an integer. - body: The response body returned as a dict. If\nno body was returned the response will be ``None`` - location: If a\nlocation header is returned, this value will be the location URL as a\nstring otherwise it will return ``None`` - objectId: If a location\nheader is returned, the value of objectId will be the last part of the\nlocation url as a string otherwise it will return ``None`` - Etag: If a\nEtag header is returned, the value of Etag will be the content of the\nEtag header returned otherwise it will return ``None``\n\nTo output the response in a human readable format when working in an\ninteractive session use the ``view_response`` method:\n\n.. code:: python\n\n In [3]: response = client_session.read('vCenterStatus')\n In [4]: client_session.view_response(response)\n HTTP status code:\n 200\n\n HTTP Body Content:\n {'vcConfigStatus': {'connected': 'true',\n 'lastInventorySyncTime': '1440445281484'}}\n\nIf a method needs a URI parameter to work, the NSX RAML Client will\ncompose the URL based on the base URL, parent and child method URL and\nthe supplied URI parameter. To supply a URI parameter, add a URI\nparameter dict to the call. You can supply multiple URI parameters in\nthe call if needed.\n\n.. code:: python\n\n In [5]: response = client_session.read('vdnSegmentPool',\n uri_parameters={'segmentPoolId': '2'})\n In [6]: client_session.view_response(response)\n HTTP status code:\n 200\n\n HTTP Body Content:\n {'segmentRange': {'begin': '5000',\n 'end': '10000',\n 'id': '2',\n 'name': 'legacy'}}\n\nIf a method supports one or more query parameters, you can supply those\noptional query parameters in your request, and the NSX RAML Client will\nadd the query parameter for you. To use this pass a query parameter dict\nto the call:\n\n.. code:: python\n\n In [7]: response = client_session.read('nwfabricStatus',\n query_parameters_dict={'resource':\n 'domain-c1632'})\n In [8]: client_session.view_response(response)\n HTTP status code:\n 200\n .... truncated for brevity ....\n\nIt is possible to use URI and query parameters concurrently in any call\nand add as many as the resource specifies.\n\nIf a resource requires a body to be supplied with data the body can be\ncomposed in the following way:\n\nCheck what the body of a call needs to look like by retrieving it out of\nthe RAML file, and displaying it to stdout using\n``view_resource_body_example``:\n\n.. code:: python\n\n In [9]: client_session.view_resource_body_example('logicalSwitches', 'create')\n\n \n mandatory\n \n mandatory\n mandatory\n \n\nIt is possible to create a template python dictionary using\n``extract_resource_body_example`` and display the output structure in a\nhuman readable format to stdout:\n\n.. code:: python\n\n In [10]: new_ls = client_session.extract_resource_body_example('logicalSwitches',\n 'create')\n\n In [11]: client_session.view_body_dict(new_ls)\n {'virtualWireCreateSpec': {'controlPlaneMode': 'mandatory',\n 'description': None,\n 'name': 'mandatory',\n 'tenantId': 'mandatory'}}\n\nIt is possible to change any of the values in the dictionary with the\ndata to be sent to the API:\n\n.. code:: python\n\n In [12]: new_ls['virtualWireCreateSpec']['controlPlaneMode'] = 'UNICAST_MODE'\n In [13]: new_ls['virtualWireCreateSpec']['name'] = 'TestLogicalSwitch1'\n In [14]: new_ls['virtualWireCreateSpec']['tenantId'] = 'Tenant1'\n\n In [15]: client_session.view_body_dict(new_ls)\n {'virtualWireCreateSpec': {'controlPlaneMode': 'UNICAST_MODE',\n 'description': None,\n 'name': 'TestLogicalSwitch1',\n 'tenantId': 'Tenant1'}}\n\nThis example shows how to send the call to the NSX Manager API by\nsupplying the body dictionary in the call:\n\n.. code:: python\n\n In [16]: new_ls_response = client_session.create('logicalSwitches',\n uri_parameters={'scopeId':\n 'vdnscope-1'},\n request_body_dict=new_ls)\n\n In [17]: client_session.view_response(new_ls_response)\n HTTP status code:\n 201\n\n HTTP location header:\n /api/2.0/vdn/virtualwires/virtualwire-1305\n\n NSX Object Id:\n virtualwire-1305\n\n HTTP Body Content:\n 'virtualwire-1305'\n\nNote on Etag header and additional headers (e.g. If-match)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSome resources in NSX Manager will additionally need the ``If-match``\nheader. To compose the ``If-match`` header, retrieve the content of the\nEtag and return it in the ``If-match`` header. For example, this is used\nin the distributed firewall configuration to deal with conflicts when\nmultiple users try to concurrently edit rule sets.\n\nThis example shows how to retrieve a dfw rule, edit it, and update it\nvia the NSX API:\n\n.. code:: python\n\n rule_read_response = client_session.read('dfwL3Rule',\n uri_parameters={'sectionId': section_id,\n 'ruleId': new_rule_id})\n updated_rule = l3_dfw_rule_read_response['body']\n etag_value = l3_dfw_rule_read_response['Etag']\n\n updated_rule['rule']['name'] = 'UpdatedByRAMLClient'\n\n update_response = client_session.update('dfwL3Rule',\n uri_parameters={'sectionId': section_id,\n 'ruleId': rule_id},\n additional_headers={'If-match': etag_value},\n request_body_dict=updated_rule)\n\nNote that the ``If-match`` header is supplied by the\n``additional_headers`` dictionary.\n\nNote on the use of XML Tags in body schemas\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSome resources in NSX expect values to be set in XML Tags. This example\nshows a dfw resource:\n\n.. code:: python\n\n In [18]: client_session.view_resource_body_example('dfwL3Rules', 'create')\n \n AddRuleTest\n allow\n \n .... truncated for brevity ....\n\nThe ``rule``\\ has the Tags ``disabled`` and ``logged``. When this type\nof Tag is found, it is converted to a key prefixed by ``@`` in the\nresulting dictionary:\n\n.. code:: python\n\n In [19]: l3rule = client_session.extract_resource_body_example('dfwL3Rules',\n 'create')\n In [20]: client_session.view_body_dict(l3rule)\n {'rule': {'@disabled': 'false',\n '@logged': 'false',\n 'action': 'allow',\n .... truncated for brevity ....\n\nIt is possible to set values using the ``@`` prefix, and they will be\nconverted to a XML Tag of the top level object.\n\n.. code:: python\n\n l3section_bdict['section']['rule'][0]['@logged'] = 'true'\n\nNote on repeating key/value pairs and resulting python lists containing dicts\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nIn some cases NSX uses lists of parameters with repeating keys. For\nexample:\n\n.. code:: python\n\n In [21]: client_session.view_resource_body_example('dfwL3Section', 'create')\n
\n \n \n ALLOW\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n DENY\n \n
\n\nThere are multiple ``destination`` keys under ``destinations``. To be\nable to work with python dictionaries, nsxramlclient will convert those\nlist of equally named parameter 'groups' to a Python list containing\ndictionaries. This example shows the resulting Python dictionary for\nthis type of resource body schema:\n\n.. code:: python\n\n In [22]: dfw_l3_sec = client_session.extract_resource_body_example('dfwL3Section',\n 'create')\n In [31]: client_session.view_body_dict(dfw_l3_sec)\n {'section': {'@name': 'Test',\n 'rule': [{'@disabled': 'false',\n '@logged': 'true',\n 'action': 'ALLOW',\n 'appliedToList': {'appliedTo': {'isValid': None,\n 'name': None,\n 'type': None,\n 'value': None}},\n 'destinations': {'@excluded': 'false',\n 'destination': [{'isValid': None,\n 'name': None,\n 'type': None,\n 'value': None},\n {'isValid': None,\n 'name': None,\n 'type': None,\n 'value': None}]},\n 'name': None,\n 'services': {'service': {'destinationPort': None,\n 'protocol': None,\n 'subProtocol': None}},\n 'sources': {'@excluded': 'false',\n 'source': [{'isValid': None,\n 'name': None,\n 'type': None,\n 'value': None},\n {'isValid': None,\n 'name': None,\n 'type': None,\n 'value': None}]}},\n {'@disabled': 'false',\n '@logged': 'true',\n 'action': 'DENY',\n 'name': None}]}}\n\nNote the ``rule`` key, its value is a python List containing multiple\nrule objects that themselves are python dictionaries. The same holds\ntrue for the ``destinations``\\ and ``sources`` keys.\n\nLicense\n^^^^^^^\n\nCopyright \u00a9 2015 VMware, Inc. All Rights Reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be included\nin all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\nOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nHow to contribute\n^^^^^^^^^^^^^^^^^\n\nAny contributions are welcome, bug reports, additional tests,\nenhancements, etc. Also we welcome your feedback if you find that\nanything is missing that would make nsxramlclient better", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/vmware/nsxramlclient", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "nsxramlclient", "package_url": "https://pypi.org/project/nsxramlclient/", "platform": "", "project_url": "https://pypi.org/project/nsxramlclient/", "project_urls": { "Homepage": "http://github.com/vmware/nsxramlclient" }, "release_url": "https://pypi.org/project/nsxramlclient/2.0.7/", "requires_dist": null, "requires_python": "", "summary": "A \"pseudo dynamic\" client for the VMware NSX for vSphere API that uses a RAML file describing the API as an Input to generate the API calls", "version": "2.0.7" }, "last_serial": 3773476, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "73396d8de4c4adac8796c497fb898765", "sha256": "7ce86c3e9c3890211ec027ccfb9914d8faf80a224fcbf3d02f2cbb95f6c743e7" }, "downloads": -1, "filename": "nsxramlclient-1.0.0.tar.gz", "has_sig": false, "md5_digest": "73396d8de4c4adac8796c497fb898765", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14015, "upload_time": "2015-08-27T01:19:27", "url": "https://files.pythonhosted.org/packages/ec/95/70ae899e27d805125e8e41848cdadd01a3915e29e61c28d3d52e94c175e0/nsxramlclient-1.0.0.tar.gz" } ], "1.0.0.dev7": [ { "comment_text": "", "digests": { "md5": "9fb5d0e26e2fa98e0aee90047332e6e8", "sha256": "7650cd6418e29cf8e2bd6cdff4ffd26f03b44a06af2071a6fc1c312f7c1a6716" }, "downloads": -1, "filename": "nsxramlclient-1.0.0.dev7.tar.gz", "has_sig": false, "md5_digest": "9fb5d0e26e2fa98e0aee90047332e6e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7159, "upload_time": "2015-08-18T14:35:45", "url": "https://files.pythonhosted.org/packages/e3/17/d423173cbdc98c7dd84619c471db141fb007ceb89c6439da8fe4f0f8bcc8/nsxramlclient-1.0.0.dev7.tar.gz" } ], "1.0.0rc1": [ { "comment_text": "", "digests": { "md5": "e2ec463652048001bd81cc3a8b616b2b", "sha256": "ca615fb18a505b5eb555caf97be6f94f4f26b8973c7da16fa3af22d4cc743f5a" }, "downloads": -1, "filename": "nsxramlclient-1.0.0rc1.tar.gz", "has_sig": false, "md5_digest": "e2ec463652048001bd81cc3a8b616b2b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13550, "upload_time": "2015-08-24T21:28:17", "url": "https://files.pythonhosted.org/packages/e7/ec/ed55819149a12194d7db10b380b26f42c165d911daefb13b81b7b8a4a47e/nsxramlclient-1.0.0rc1.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "6c5232f0cc6ec9b7a08a296f630282b4", "sha256": "8635f40b60f06e1b82e4e43ba38b443d9601c68409fd49c3daa1a16eb42d084a" }, "downloads": -1, "filename": "nsxramlclient-1.0.1.tar.gz", "has_sig": false, "md5_digest": "6c5232f0cc6ec9b7a08a296f630282b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14172, "upload_time": "2015-08-29T00:45:56", "url": "https://files.pythonhosted.org/packages/01/2a/48c3fedafd8d620782bddd073b71535b8c08a0e81b09c760851bd1ce727c/nsxramlclient-1.0.1.tar.gz" } ], "1.0.2b0": [ { "comment_text": "", "digests": { "md5": "5ab841a300a47a2011554b588dca799b", "sha256": "0835d733cacde9a694bfc3b39736457e1d825ab3d9db4fdb0b1a7180ea5df601" }, "downloads": -1, "filename": "nsxramlclient-1.0.2b0.tar.gz", "has_sig": false, "md5_digest": "5ab841a300a47a2011554b588dca799b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14434, "upload_time": "2015-09-23T06:50:38", "url": "https://files.pythonhosted.org/packages/8d/15/440ba3a1a5d6f06d691a69dc1a6eacfc72c8bbb706da91980e94a21a6017/nsxramlclient-1.0.2b0.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "20fd5e59404f354d3f35e325a86db2ae", "sha256": "65712e2ea964c14c21d10aca1b374ac83b3424e7b9447215725859d691363e2f" }, "downloads": -1, "filename": "nsxramlclient-1.0.3.tar.gz", "has_sig": false, "md5_digest": "20fd5e59404f354d3f35e325a86db2ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14441, "upload_time": "2015-09-23T07:38:12", "url": "https://files.pythonhosted.org/packages/f7/ea/a2592259d55b9980b39f72b5f06c29ec70906412cd0a3d2a538a720f00f9/nsxramlclient-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "2d1e97e346942067eea59c074ac136bf", "sha256": "4ef3c1dc98ecaa866fd5707c6f8db20490883b0b405f0d2c6de7a9b27825f6b3" }, "downloads": -1, "filename": "nsxramlclient-1.0.4.tar.gz", "has_sig": false, "md5_digest": "2d1e97e346942067eea59c074ac136bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15068, "upload_time": "2016-04-07T14:05:22", "url": "https://files.pythonhosted.org/packages/04/8b/cf9fb3ac95984aecdaec5af2765b9f7d85931578a8bf1de3785cd0b0c5c0/nsxramlclient-1.0.4.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "e92340990b972cbe12b790dde0059a00", "sha256": "2e5c30cfa4a164b326231cdd8ca5f6d71e1013e7748658ac336c5618afcfc8ad" }, "downloads": -1, "filename": "nsxramlclient-2.0.0.tar.gz", "has_sig": false, "md5_digest": "e92340990b972cbe12b790dde0059a00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16381, "upload_time": "2016-06-02T22:35:48", "url": "https://files.pythonhosted.org/packages/15/af/4a60319b07e8124fa94c1b23712b58a2c8cef4113950d54dff19ae93ad17/nsxramlclient-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "77b043eb2707a8983489e96180560992", "sha256": "bba1f124ae6b973f6342624a520f260de9ae46588491648ef19a1b4b016b7b2b" }, "downloads": -1, "filename": "nsxramlclient-2.0.1.tar.gz", "has_sig": false, "md5_digest": "77b043eb2707a8983489e96180560992", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16399, "upload_time": "2016-07-25T23:26:21", "url": "https://files.pythonhosted.org/packages/6c/4c/9d531b81effc52d9b1f5fb84d3c49d5ff6924bf326b07c750389da76dc71/nsxramlclient-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "78ca33099bc28726a5af6adc49e8cda9", "sha256": "b22794a4f91bbcb7841d0b983f28fe6dad48c0d8b7ce11bf0a5f915292cfa4a4" }, "downloads": -1, "filename": "nsxramlclient-2.0.2.tar.gz", "has_sig": false, "md5_digest": "78ca33099bc28726a5af6adc49e8cda9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17204, "upload_time": "2016-08-08T07:31:29", "url": "https://files.pythonhosted.org/packages/f8/f7/7131b2790128982e366c7fc87ac199d641a2f109c8c8d9de11051841a120/nsxramlclient-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "a7dcf70cda2fb2bd58f342b6923aa165", "sha256": "99dc6715e07de0ead749b62b86744c3418f64abc6ce9c41879d1cb25c2bbddd3" }, "downloads": -1, "filename": "nsxramlclient-2.0.3.tar.gz", "has_sig": false, "md5_digest": "a7dcf70cda2fb2bd58f342b6923aa165", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17217, "upload_time": "2016-08-11T09:03:10", "url": "https://files.pythonhosted.org/packages/d6/ba/1d7824584e64174e82a8f61d08cef9cd3ac669b67a863569db10dfe1bfb7/nsxramlclient-2.0.3.tar.gz" } ], "2.0.5": [ { "comment_text": "", "digests": { "md5": "c71b84e16883814ab4dfa90e1c68af41", "sha256": "0e674aa691262f5b2487408d5713909c77f0f16c9fac61ccadf8ee5d662b3e07" }, "downloads": -1, "filename": "nsxramlclient-2.0.5.tar.gz", "has_sig": false, "md5_digest": "c71b84e16883814ab4dfa90e1c68af41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24529, "upload_time": "2016-12-05T20:27:20", "url": "https://files.pythonhosted.org/packages/30/b7/5f0dcd74e55af5f8e1e6c834d76d8bef66b70c2ac6509b635930b039f96a/nsxramlclient-2.0.5.tar.gz" } ], "2.0.6": [ { "comment_text": "", "digests": { "md5": "e1c8971b73c167a081e2eecb44a685f8", "sha256": "ec32f7bd6e31a62c839f92230f692a7d56945d76698c1a141559b020d4c3c260" }, "downloads": -1, "filename": "nsxramlclient-2.0.6.tar.gz", "has_sig": false, "md5_digest": "e1c8971b73c167a081e2eecb44a685f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25667, "upload_time": "2017-01-30T20:27:09", "url": "https://files.pythonhosted.org/packages/55/99/6fe1730e6a8be421926c77df4a1f7b287be0d10f1999ca1b91014bee703e/nsxramlclient-2.0.6.tar.gz" } ], "2.0.7": [ { "comment_text": "", "digests": { "md5": "7302ddc9ed2f9a10058f3cd600e26aa4", "sha256": "723efbed65b4753683f73eaefde58e0c4b266560676edfcfd92a636cb1215c90" }, "downloads": -1, "filename": "nsxramlclient-2.0.7.tar.gz", "has_sig": false, "md5_digest": "7302ddc9ed2f9a10058f3cd600e26aa4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25801, "upload_time": "2018-04-17T14:40:39", "url": "https://files.pythonhosted.org/packages/b3/da/bda98b9ce1f8d52a34708c75bfdd1dd8076e6c59a020d9173e682e9196af/nsxramlclient-2.0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7302ddc9ed2f9a10058f3cd600e26aa4", "sha256": "723efbed65b4753683f73eaefde58e0c4b266560676edfcfd92a636cb1215c90" }, "downloads": -1, "filename": "nsxramlclient-2.0.7.tar.gz", "has_sig": false, "md5_digest": "7302ddc9ed2f9a10058f3cd600e26aa4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25801, "upload_time": "2018-04-17T14:40:39", "url": "https://files.pythonhosted.org/packages/b3/da/bda98b9ce1f8d52a34708c75bfdd1dd8076e6c59a020d9173e682e9196af/nsxramlclient-2.0.7.tar.gz" } ] }