{ "info": { "author": "Adam T. Lindsay", "author_email": "a.lindsay+github@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP :: Site Management", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Boot", "Topic :: System :: Systems Administration" ], "description": "Python SmartDataCenter\n======================\n\nConnect with Joyent_'s SmartDataCenter CloudAPI_ via Python, using secure \nhttp-signature_ signed requests. It enables you to programmatically provision\nand otherwise control machines within Joyent_'s public cloud.\n\nThis is a third-party effort.\n\nThis module currently supports:\n\n* Secure connections (via http_signature_ and optionally, ssh-agent)\n* Key management\n* Browsing and access of datacenters, datasets (OS distributions/VM bundles), \n and packages (machine sizes and resources)\n* Machine listing, search, creation, management \n (start/stop/reboot/resize/delete), snapshotting, metadata, and tags\n* Installing boot scripts on machines\n\nIt attempts to provide Pythonic objects (for Data Centers, Machines and \nSnapshots) and convenience methods only when appropriate, and otherwise deals \nwith string identifiers or dicts as lightweight objects.\n\nRequirements\n------------\n\n* requests_\n* http_signature_\n* PyCrypto_ (required by http_signature)\n\nOptional:\n\n* ssh_ or paramiko_ (post-1.8.0) \n (used by http_signature for its ``ssh-agent`` integration)\n\nWe assume that ``json`` is present because requests now requires py2.6 and \nup.\n\nPython SmartDataCenter Links\n----------------------------\n\n* `Python SmartDataCenter Tutorial`_ \n* `smartdc in PyPI`_\n* `http_signature in PyPI`_\n* `py-smartdc at GitHub`_\n* `py-http-signature at GitHub`_\n* `py-smartdc Documentation`_ & API reference\n* `Joyent CloudAPI Documentation`_\n\n.. _Joyent: http://joyentcloud.com/\n.. _CloudAPI: https://api.joyentcloud.com/docs\n.. _Joyent CloudAPI Documentation: CloudAPI_\n.. _http-signature: \n https://github.com/joyent/node-http-signature/blob/master/http_signing.md\n.. _requests: http://pypi.python.org/pypi/requests\n.. _PyCrypto: http://pypi.python.org/pypi/pycrypto\n.. _ssh: http://pypi.python.org/pypi/ssh\n.. _paramiko: http://pypi.python.org/pypi/paramiko\n.. _Python SmartDataCenter Tutorial: \n http://pythonhosted.org/smartdc/tutorial.html\n.. _smartdc in PyPI: http://pypi.python.org/pypi/smartdc\n.. _http_signature in PyPI: http://pypi.python.org/pypi/http_signature\n.. _http_signature: `http_signature in PyPI`_\n.. _py-http-signature at GitHub: https://github.com/atl/py-http-signature\n.. _py-smartdc at GitHub: https://github.com/atl/py-smartdc\n.. _py-smartdc Documentation: http://pythonhosted.org/smartdc/\n.. _Telef\u00f3nica's InstantServers: http://cloud.telefonica.com/instantservers/\n\nInstallation\n------------\n\n::\n\n pip install smartdc\n\nQuickstart\n----------\n\nThis requires a Joyent Public Cloud account with valid payment information and\nat least one SSH key uploaded. The example as presented should cost a maximum\nof 0.01USD::\n\n from smartdc import DataCenter\n \n sdc = DataCenter(location='us-sw-1', key_id='/accountname/keys/keyname')\n \n sdc.datasets()\n \n sm = sdc.create_machine(name='test', dataset='sdc:sdc:standard:1.0.7',\n package='g3-standard-0.25-smartos')\n \n sm.poll_until('running')\n \n import urllib2\n \n urllib2.urlopen('http://' + sm.public_ips[0]).headers.dict\n \n sm.stop()\n \n sm.poll_until('stopped')\n \n sm.delete()\n\nConnecting with `Telef\u00f3nica's InstantServers`_::\n\n from smartdc import DataCenter, TELEFONICA_LOCATIONS\n \n mad = DataCenter(location='eu-mad-1', \n known_locations=TELEFONICA_LOCATIONS,\n key_id='/accountname/keys/keyname')\n \n mad.default_package()\n\nWhy?\n----\n\nA colleague and I wanted something Pythonic to fit into our preferred \ntoolchain, and the easiest approach was to build it myself. Requests made some \naspects stupidly easy, which is why I created the dependency for the first \nversion. The colleague wanted integration with ``ssh-agent``, and using ssh_ \nwas the easiest path to that.\n\nAuthors\n-------\n\n`Adam T. Lindsay`_\n\n.. _Adam T. Lindsay: http://atl.me/\n\nLicense\n-------\n\nMIT\n\n\nChanges\n-------\n\n0.2.0 (2013-06-17)\n~~~~~~~~~~~~~~~~~~\nThis is an initial release to accommodate demand for basic SDC API v7.0 features. Further work is to come, so the API and features are to be considered unstable and in flux.\n\n* Support SmartDC API Version 7.0 by default\n* Add legacy mode for places where version 6.5 calls are necessary -- calling a v7.0 machine in v6.5 mode will lead to unexpected results.\n* Added list/get networks, list/get images methods\n* Support new REST API-level filtering for listing packages and images\n* ``create_machine()`` now accepts a network parameter\n* Eliminated the previously-deprecated ``DataCenter(config=)`` parameter\n\n0.1.13 (2013-06-13)\n~~~~~~~~~~~~~~~~~~~\n* Changes to allow for connections to vmwebadm hubs\n* Be resilient to IP addresses not being present immediately on creation\n* Adapt documentation to allow for late v6.5 API deployment changes\n\n0.1.12 (2013-01-08)\n~~~~~~~~~~~~~~~~~~~\n* Telef\u00f3nica has updated the endpoints for its known locations. These locations are capable of SSL-verifiable connections.\n* Move print statements in library to print functions (still pending issue with versioneer)\n* Requests 1.0 release removed ``config`` from request's keyword arguments, so created a workaround that works in old and new versions\n* ``verbose`` (bool) is now the preferred keyword argument in DataCenter initialization since we no longer piggy-back on requests config. ``config`` issues a warning.\n\n0.1.11 (2012-12-07)\n~~~~~~~~~~~~~~~~~~~\n* Minor update to the README quickstart\n* Machines are hashable based on their UUIDs\n* Pre-programmed Telef\u00f3nica locations are based on FQDNs\n* KNOWN ISSUE: DataCenter equality not guaranteed with Telef\u00f3nica servers (due to how they are identified by Telef\u00f3nica)\n\n0.1.10 (2012-11-07)\n~~~~~~~~~~~~~~~~~~~\n* This version accommodates communication with Telef\u00f3nica's InstantServers service\n* Change documentation to account for underlying shift in py-http-signature accommodating both (new) paramiko and ssh\n* Add \"verify\" option to DataCenter to allow for opt-out of SSL Certificate verification (necessitated by Telef\u00f3nica's initial release of InstantServers)\n* Save more state from current DataCenter when transferring to another one\n* Be a little more resourceful in resolving a DataCenter.datacenter() argument by name\n\n0.1.9 (2012-10-02)\n~~~~~~~~~~~~~~~~~~\n* Bug fix: POSTs including data would get mangled while looking for a correct ssh-agent key (thanks, @thekad)\n* Bug fix: ssh-agent would throw wrong error if it failed to find any keys\n* Set `allow-agent` to False by default, thanks in part to this less-explored code path\n\n0.1.8 (2012-05-02)\n~~~~~~~~~~~~~~~~~~\n* Bug fix: double-json encoding on add_key got in way of proper upload\n* Introduce python-versioneer to hopefully make version management more palatable\n\n0.1.7 (2012-05-01)\n~~~~~~~~~~~~~~~~~~\n* Renamed metadata_dict and tag_dict parameters to metadata and tags\n* POST data as JSON, rather than encoded in URL\n* Added boot_script option on machine creation\n* Process and expose credentials\n* Slight tutorial and other documentation cleanup\n* Local filtering on datasets and packages\n\n0.1.6 (2012-04-30)\n~~~~~~~~~~~~~~~~~~\n* Fixed release issues (README)\n* Moved long tutorial out of the README\n* Integrated with ``ssh-agent`` changes in ``http_signature``", "description_content_type": null, "docs_url": "https://pythonhosted.org/smartdc/", "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/atl/py-smartdc", "keywords": "http,web,joyent,admin,operations", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "smartdc", "package_url": "https://pypi.org/project/smartdc/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/smartdc/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/atl/py-smartdc" }, "release_url": "https://pypi.org/project/smartdc/0.2.0/", "requires_dist": null, "requires_python": null, "summary": "Experimental Joyent SmartDataCenter 6.5 & 7.0 CloudAPI connector using http-signature authentication via Requests", "version": "0.2.0" }, "last_serial": 799723, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "414fa45240144a93fb3356bd96abaaae", "sha256": "80de6a2b1c5d37ee9a136608b0396a99b370b464448b8f38e76d9142a55e1bca" }, "downloads": -1, "filename": "smartdc-0.1.0.tar.gz", "has_sig": false, "md5_digest": "414fa45240144a93fb3356bd96abaaae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5561, "upload_time": "2012-04-18T16:29:27", "url": "https://files.pythonhosted.org/packages/0a/72/449c49b2acbac0e5ea2c0112361c69c8bb0401703e53224054886a5932c4/smartdc-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "3fc03504cecf66846549a437db3f3ffb", "sha256": "843dc9d6af135ed266e7c96b77f4fee98de250b3527c59be86bfd47def5963af" }, "downloads": -1, "filename": "smartdc-0.1.1.tar.gz", "has_sig": false, "md5_digest": "3fc03504cecf66846549a437db3f3ffb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5547, "upload_time": "2012-04-18T18:02:32", "url": "https://files.pythonhosted.org/packages/60/ab/f82e1aea961e7ac48ef87c8f5562638e00a9a11d394d8325088f6dfdd7d8/smartdc-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "a1ac33633765b54ef7f2766ee69bbf1e", "sha256": "dee2022a0e3ad107e1ea8c9894025d7a06e62395ce7aed7c96481d814fa224e6" }, "downloads": -1, "filename": "smartdc-0.1.10.tar.gz", "has_sig": false, "md5_digest": "a1ac33633765b54ef7f2766ee69bbf1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19293, "upload_time": "2012-11-07T23:32:29", "url": "https://files.pythonhosted.org/packages/7f/7a/17335e944fb32759e0589ab78c1ab3f9599b909216d7d351bf28eddd9ccb/smartdc-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "8282eabe01a01039e15cb478910de1b5", "sha256": "e283a7d1634e1a97cd696c324e488d687c50b4888da8b7e4fffe60c337c5d817" }, "downloads": -1, "filename": "smartdc-0.1.11.tar.gz", "has_sig": false, "md5_digest": "8282eabe01a01039e15cb478910de1b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19551, "upload_time": "2012-12-07T15:51:13", "url": "https://files.pythonhosted.org/packages/29/46/9e73ac740b82c99cd7007ea13538b9a1b2dda1a5000b300c2a395383d17a/smartdc-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "b960f61facafc879142b699050f6d8b4", "sha256": "36206f4fddecae080c66faf756712537e650936b879abb23a8c428731d2415fe" }, "downloads": -1, "filename": "smartdc-0.1.12.tar.gz", "has_sig": false, "md5_digest": "b960f61facafc879142b699050f6d8b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20086, "upload_time": "2013-01-08T19:43:28", "url": "https://files.pythonhosted.org/packages/fc/97/4377721695f9cef4521f43025e937d20171283b86bf7223d999d11f7a32c/smartdc-0.1.12.tar.gz" } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "a546967ffeb44faf0f3626695bdc36d1", "sha256": "f71e072bd45833f3cd92149adcfd6e31955b2a65e711f3cb6a823b2464ca6127" }, "downloads": -1, "filename": "smartdc-0.1.13.tar.gz", "has_sig": false, "md5_digest": "a546967ffeb44faf0f3626695bdc36d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20406, "upload_time": "2013-06-14T04:00:52", "url": "https://files.pythonhosted.org/packages/39/59/0f93fdb4b51345b36659f4769404961ecf9745bef73daecc1d70e12e6355/smartdc-0.1.13.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "63e2c9acade699953028eaf57b94d408", "sha256": "c49cea8444ce3d3696d8aa3823756932b1efd25f419a7d8ac58746962a19cdb1" }, "downloads": -1, "filename": "smartdc-0.1.2.tar.gz", "has_sig": false, "md5_digest": "63e2c9acade699953028eaf57b94d408", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10992, "upload_time": "2012-04-20T14:43:22", "url": "https://files.pythonhosted.org/packages/48/23/064906882c17848df946b60cc9955240c485e36ae20f4d11ce2878bbaba9/smartdc-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "6bcd83409b3d730e091c7a824436e494", "sha256": "ecd669ab821e113996583a422cf0d3e6234e1a16bef62067045d8753b7e69b03" }, "downloads": -1, "filename": "smartdc-0.1.3.tar.gz", "has_sig": false, "md5_digest": "6bcd83409b3d730e091c7a824436e494", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12160, "upload_time": "2012-04-24T15:58:26", "url": "https://files.pythonhosted.org/packages/2d/0b/020a7877b40f1ad4d404c70bbea996d49ddb88e508fe493dc338a9bba461/smartdc-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "9f9a212438736cf845bcb38e5df9e1a0", "sha256": "6a24759c30dc609968e7ba593af662a03dfd18a2d6fb9f6e59843c95ebbaa14c" }, "downloads": -1, "filename": "smartdc-0.1.4.tar.gz", "has_sig": false, "md5_digest": "9f9a212438736cf845bcb38e5df9e1a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15074, "upload_time": "2012-04-27T13:47:58", "url": "https://files.pythonhosted.org/packages/42/f5/9def2a5cdc51ba228ccaa675758575ab3a5fe918dd22e67f71cd5e6a756f/smartdc-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "53b5c82088bf89f4023633e3752feee1", "sha256": "78e660e51b46aaf4a1f4981c961b3692ff0d20bd96252bd5b75d331760308f7e" }, "downloads": -1, "filename": "smartdc-0.1.5.tar.gz", "has_sig": false, "md5_digest": "53b5c82088bf89f4023633e3752feee1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16679, "upload_time": "2012-04-27T15:47:15", "url": "https://files.pythonhosted.org/packages/cc/77/c2a77193e7652b7d21ace1be9762f85a30bbc94b599b83fae26052f035f8/smartdc-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "5b58b398d5dc5efd7f69ca32fa46851a", "sha256": "8a0be042d3a4d6429120987eb70021e5cc10d47a4e4fb530d2eb8f37d0430073" }, "downloads": -1, "filename": "smartdc-0.1.6.tar.gz", "has_sig": false, "md5_digest": "5b58b398d5dc5efd7f69ca32fa46851a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13383, "upload_time": "2012-04-30T17:52:25", "url": "https://files.pythonhosted.org/packages/d0/0f/fdd10bbfbab74a8a793e78c9e7fecb9143182470ce0c38892f9005541eb3/smartdc-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "886a6709c5b41c5943d1eb18130be3d8", "sha256": "32d6ed6e5e07bfeee1783f232c5f13d1af53af020d1079238be0811dea36786f" }, "downloads": -1, "filename": "smartdc-0.1.7.tar.gz", "has_sig": false, "md5_digest": "886a6709c5b41c5943d1eb18130be3d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14612, "upload_time": "2012-05-01T13:22:40", "url": "https://files.pythonhosted.org/packages/45/53/c910119d2ecbd2d8257b6540c103988e7444eb9e341ed0d0382ea3ec8350/smartdc-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "84443b8f929be0dda486eb627cc31b0e", "sha256": "992b1656c4ecedd249c1acddc9250d6e3c2a4c88107491ac37f8df182557c558" }, "downloads": -1, "filename": "smartdc-0.1.8.tar.gz", "has_sig": false, "md5_digest": "84443b8f929be0dda486eb627cc31b0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18404, "upload_time": "2012-05-02T15:58:55", "url": "https://files.pythonhosted.org/packages/27/5f/4f53eb3d9ef5a68ec9a60ce11bc1a33569381555acdb33780f0a0130290e/smartdc-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "a79b1acf6c7a6c01211983e3d6682f72", "sha256": "acb283786508482380a1546163e58edf5bb1f66a28bfd809bb4fc42743ad4645" }, "downloads": -1, "filename": "smartdc-0.1.9.tar.gz", "has_sig": false, "md5_digest": "a79b1acf6c7a6c01211983e3d6682f72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18746, "upload_time": "2012-10-02T20:44:25", "url": "https://files.pythonhosted.org/packages/0c/16/9070daaf805d32001034f43bfe744afcbbea7c8cdefa8729d57e58f494dd/smartdc-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "d2d7697da44f77128b9036d76f4577f4", "sha256": "6ffd866fb98386324e189e24d4f7532f66c1b20eece35ca1a6cb4b2a2639fc85" }, "downloads": -1, "filename": "smartdc-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d2d7697da44f77128b9036d76f4577f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21506, "upload_time": "2013-06-18T04:17:51", "url": "https://files.pythonhosted.org/packages/0d/0f/75b804a04b4291c1fb94bf7aff88452d1064b277cafc349df5104479e3db/smartdc-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d2d7697da44f77128b9036d76f4577f4", "sha256": "6ffd866fb98386324e189e24d4f7532f66c1b20eece35ca1a6cb4b2a2639fc85" }, "downloads": -1, "filename": "smartdc-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d2d7697da44f77128b9036d76f4577f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21506, "upload_time": "2013-06-18T04:17:51", "url": "https://files.pythonhosted.org/packages/0d/0f/75b804a04b4291c1fb94bf7aff88452d1064b277cafc349df5104479e3db/smartdc-0.2.0.tar.gz" } ] }