{ "info": { "author": "Gridcentric", "author_email": "support@gridcentric.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: OpenStack", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python" ], "description": "Overview\n========\n\nAn extension hook for novaclient that enables it to interact with the Cobalt endpoints.\n\nCommand line usage\n==================\n\nAfter installing the operations provided by the Cobalt extension will be available to the \nnova command line application:\n\n # Display all of the available commands of the nova script. The gridcentric live-image-create,\n # live-image-start, live-image-list, live-image-servers, live-image-delete and co-migrate\n # are listed.\n $ nova help\n \n # Doing nova help on any of these commands will display how to use them in detail.\n $ nova help live-image-create\n usage: nova live-image-create [--name ] \n\n Creates a new live-image from a running instance.\n\n Positional arguments:\n ID or name of the instance from which to create the live-\n image\n\n Optional arguments:\n --name The name of the live-image\n\n \n $ nova help live-image-start\n usage: nova live-image-start [--target ]\n [--name ]\n [--user_data ]\n [--security-groups ]\n [--availability-zone ]\n [--num-instances ]\n [--key-name ] [--params ]\n \n\n Start a new instance from a live-image.\n\n Positional arguments:\n ID or name of the live-image\n\n Optional arguments:\n --target \n The memory target of the launched instance\n --name \n The name of the launched instance\n --user_data \n User data file to pass to be exposed by the metadata\n server\n --security-groups \n comma separated list of security group names.\n --availability-zone \n The availability zone for instance placement.\n --num-instances \n Launch multiple instances at a time\n --key-name \n Key name of keypair that should be created earlier\n with the command keypair-add\n --params Guest parameters to send to vms-agent\n\n\n $ nova help live-image-delete\n usage: nova live-image-delete \n\n Delete a live image.\n\n Positional arguments:\n ID or name of the live-image\n\n \n $ nova help co-migrate\n usage: nova co-migrate [--dest ] \n\n Migrate an instance using VMS.\n\n Positional arguments:\n ID or name of the instance to migrate\n\n Optional arguments:\n --dest \n Host to migrate to\n\n \n $ nova help live-image-servers\n usage: nova live-image-servers \n\n List instances started from this live-image.\n\n Positional arguments:\n ID or name of the live-image\n\n \n $ nova help live-image-list\n usage: nova live-image-list \n\n List the live images of this instance.\n\n Positional arguments:\n ID or name of the instance\n\n \n\nScripting usage\n===============\n\nThe novaclient hooks can also be accessed directly using the python API.\n\n user = \"admin\"\n apikey = \"admin\"\n project = \"openstackDemo\"\n authurl = \"http://localhost:5000/v2.0\" \n \n extensions = shell.OpenStackComputeShell()._discover_extensions(\"1.1\")\n novaclient = NovaClient(user, apikey, project, authurl, extensions=extensions,\n endpoint_type=shell.DEFAULT_NOVA_ENDPOINT_TYPE,\n service_type=shell.DEFAULT_NOVA_SERVICE_TYPE)\n \n def wait_for_status(server, status):\n while server.status != status:\n time.sleep(30)\n server = novaclient.cobalt.get(server.id)\n return server\n\n def wait_until_gone(server):\n try:\n while True:\n server = novaclient.cobalt.get(server.id)\n time.sleep(10)\n except Exception, e:\n # server is no longer there.\n pass\n\n # Boot a new server using flavor 1 and the image passed in as the first argument.\n image_id = sys.argv[1]\n flavor_id = 1\n server = novaclient.servers.create(\"Gridcentric instance\",\n image_id,\n flavor_id)\n server = wait_for_status(server, \"ACTIVE\")\n \n # Create a live image of the server. This will return an instance of the blessed_server. We need to\n # wait until the live image becomes active.\n live_image = novaclient.cobalt.live_image_create(server)[0]\n live_image = wait_for_status(live_image, \"BLESSED\")\n \n # Launch a new server based off of the live iamge. Note that we can do this\n # by either calling start_live_image on the server itself, or passing the server into the\n # cobalt manager.\n launched_server = live_image.start_live_image()[0]\n launched_server2 = novaclient.cobalt.start_live_image(live_image)[0]\n \n # list the servers that were launched from the live_image.\n for s in live_image.list_servers():\n print \"Server %s was launched from %s\" %(s.id, live_image.id)\n \n # Delete the launched servers.\n launched_server2 = wait_for_status(launched_server2, \"ACTIVE\")\n launched_server2.delete()\n launched_server = wait_for_status(launched_server, \"ACTIVE\")\n novaclient.servers.delete(launched_server)\n\n # W need to ensure that the launched instances have been deleted before deleting\n # the live image.\n wait_until_gone(launched_server2)\n wait_until_gone(launched_server)\n\n # Delete the original server. Note we can delete this server\n # and keep the blessed one around.\n server.delete()\n\n # Discard the blessed server\n live_image.delete_live_image()\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.gridcentric.com/", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "cobalt_python_novaclient_ext", "package_url": "https://pypi.org/project/cobalt_python_novaclient_ext/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/cobalt_python_novaclient_ext/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://www.gridcentric.com/" }, "release_url": "https://pypi.org/project/cobalt_python_novaclient_ext/1.3.107/", "requires_dist": null, "requires_python": null, "summary": "Cobalt extension for OS novaclient.", "version": "1.3.107" }, "last_serial": 976172, "releases": { "1.3.102": [ { "comment_text": "", "digests": { "md5": "87c493ed4bd9d6c2704bc5416189f1ca", "sha256": "38c44b7c2bd8aabe8b19e38d2b44ffb0f20e8453b9672d8e4fb19689ea4f0b4f" }, "downloads": -1, "filename": "cobalt_python_novaclient_ext-1.3.102.tar.gz", "has_sig": false, "md5_digest": "87c493ed4bd9d6c2704bc5416189f1ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12124, "upload_time": "2013-11-25T22:13:20", "url": "https://files.pythonhosted.org/packages/54/a0/671a85c07b4d2311c77a678246b71375eccfcb974f41c43d5c104b4d323a/cobalt_python_novaclient_ext-1.3.102.tar.gz" } ], "1.3.105": [ { "comment_text": "", "digests": { "md5": "523acd55ffc7d4f6bf11f138374491da", "sha256": "e08de70b22ae57f5aec56db6437454854ba4d7ef58ca70c891fcdf2e387b3760" }, "downloads": -1, "filename": "cobalt_python_novaclient_ext-1.3.105.tar.gz", "has_sig": false, "md5_digest": "523acd55ffc7d4f6bf11f138374491da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12222, "upload_time": "2013-12-10T17:34:39", "url": "https://files.pythonhosted.org/packages/57/f6/7fd0a1a7527754214f807302f3289f339ea791993fa2144ef4f663e9b63b/cobalt_python_novaclient_ext-1.3.105.tar.gz" } ], "1.3.107": [ { "comment_text": "", "digests": { "md5": "d6924ddc923d676ed1fabb39fe107c74", "sha256": "29c6ad053c8e8ab7b18da89e398ecb1202a23fcdbb5a3b8751fce29e12de9ba7" }, "downloads": -1, "filename": "cobalt_python_novaclient_ext-1.3.107.tar.gz", "has_sig": false, "md5_digest": "d6924ddc923d676ed1fabb39fe107c74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12938, "upload_time": "2014-01-21T15:31:41", "url": "https://files.pythonhosted.org/packages/73/9b/b7cdbc82c8653a8c1507fd0da6484810cb4ec14504df0e87c3907b972471/cobalt_python_novaclient_ext-1.3.107.tar.gz" } ], "1.3.66": [ { "comment_text": "", "digests": { "md5": "5294565fb31d9fef5e6e96500d32203c", "sha256": "6b9607c0e4ce679ed0bf825f534efaa51edc996ae69287c89b40d690da45e36e" }, "downloads": -1, "filename": "cobalt_python_novaclient_ext-1.3.66.tar.gz", "has_sig": false, "md5_digest": "5294565fb31d9fef5e6e96500d32203c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11034, "upload_time": "2013-05-27T19:22:45", "url": "https://files.pythonhosted.org/packages/59/40/e004f6fcea570f15e67d452cc1e29c05bd3870c79270045e8ee02e63a608/cobalt_python_novaclient_ext-1.3.66.tar.gz" } ], "1.3.70": [ { "comment_text": "", "digests": { "md5": "2eee86fe402636f76241b41f389de6c9", "sha256": "53f3decbbb6025943e8cf4a090c6532b464b6b7907b12cad9fbb1120e1988dba" }, "downloads": -1, "filename": "cobalt_python_novaclient_ext-1.3.70.tar.gz", "has_sig": false, "md5_digest": "2eee86fe402636f76241b41f389de6c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11089, "upload_time": "2013-05-29T15:48:56", "url": "https://files.pythonhosted.org/packages/82/9b/f612a1262e08d0cbf404f71c423f9646b902c87a6645cc711dd87acc0978/cobalt_python_novaclient_ext-1.3.70.tar.gz" } ], "1.3.85": [ { "comment_text": "", "digests": { "md5": "51500d91417fb43d302f9874fd25c5a7", "sha256": "65bd3d1b7e386ea94bf9621c1310fbe5d2bf9973119800495cdb45a7c5e0071c" }, "downloads": -1, "filename": "cobalt_python_novaclient_ext-1.3.85.tar.gz", "has_sig": false, "md5_digest": "51500d91417fb43d302f9874fd25c5a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11869, "upload_time": "2013-06-12T16:47:56", "url": "https://files.pythonhosted.org/packages/bf/1f/1d2a05440f201e05c29ad593cabd9be845295a7a1acba6f0977e2cb699e8/cobalt_python_novaclient_ext-1.3.85.tar.gz" } ], "1.3.86": [ { "comment_text": "", "digests": { "md5": "37ac92bef27ebb3f53519b8dadb4d401", "sha256": "cba2140dd0966a7ed3c470de385d111df3457306e310f860025f05d49d131a25" }, "downloads": -1, "filename": "cobalt_python_novaclient_ext-1.3.86.tar.gz", "has_sig": false, "md5_digest": "37ac92bef27ebb3f53519b8dadb4d401", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11879, "upload_time": "2013-06-28T01:29:37", "url": "https://files.pythonhosted.org/packages/2f/d1/ad9f633b1464f82aea79e8013678d09b0bde6a4ea3e2b81e4f91c5a2442f/cobalt_python_novaclient_ext-1.3.86.tar.gz" } ], "1.3.88": [ { "comment_text": "", "digests": { "md5": "ffe2769f00af28c32f70c48625958ebc", "sha256": "f7c7fd0d4fe1ed074c64124cd7fab8f588207394881a944889a0ddfe618c59c2" }, "downloads": -1, "filename": "cobalt_python_novaclient_ext-1.3.88.tar.gz", "has_sig": false, "md5_digest": "ffe2769f00af28c32f70c48625958ebc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11858, "upload_time": "2013-07-08T13:52:35", "url": "https://files.pythonhosted.org/packages/fa/c0/e7e448657f3f71472185e3b33ba65076d1638b23cfe595ada2e8e53ac3bf/cobalt_python_novaclient_ext-1.3.88.tar.gz" } ], "1.3.96": [ { "comment_text": "", "digests": { "md5": "6d7bfe4b891fff47fdb57f3e12010b84", "sha256": "cd976474db0a64b725fdacf77a2adf52feac1fea41fbe663dd8bd2f5c4239dbb" }, "downloads": -1, "filename": "cobalt_python_novaclient_ext-1.3.96.tar.gz", "has_sig": false, "md5_digest": "6d7bfe4b891fff47fdb57f3e12010b84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12024, "upload_time": "2013-10-11T18:42:04", "url": "https://files.pythonhosted.org/packages/ef/a2/1b827f08336bce743eb7928f26c427b68a42e007e11482be144366fe2751/cobalt_python_novaclient_ext-1.3.96.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d6924ddc923d676ed1fabb39fe107c74", "sha256": "29c6ad053c8e8ab7b18da89e398ecb1202a23fcdbb5a3b8751fce29e12de9ba7" }, "downloads": -1, "filename": "cobalt_python_novaclient_ext-1.3.107.tar.gz", "has_sig": false, "md5_digest": "d6924ddc923d676ed1fabb39fe107c74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12938, "upload_time": "2014-01-21T15:31:41", "url": "https://files.pythonhosted.org/packages/73/9b/b7cdbc82c8653a8c1507fd0da6484810cb4ec14504df0e87c3907b972471/cobalt_python_novaclient_ext-1.3.107.tar.gz" } ] }