skip to navigation
skip to content

Not Logged In

cobalt_python_novaclient_ext 1.3.107

Cobalt extension for OS novaclient.

Overview
========

An extension hook for novaclient that enables it to interact with the Cobalt endpoints.

Command line usage
==================

After installing the operations provided by the Cobalt extension will be available to the
nova command line application:

# Display all of the available commands of the nova script. The gridcentric live-image-create,
# live-image-start, live-image-list, live-image-servers, live-image-delete and co-migrate
# are listed.
$ nova help

# Doing nova help on any of these commands will display how to use them in detail.
$ nova help live-image-create
usage: nova live-image-create [--name <name>] <instance>

Creates a new live-image from a running instance.

Positional arguments:
<instance> ID or name of the instance from which to create the live-
image

Optional arguments:
--name <name> The name of the live-image


$ nova help live-image-start
usage: nova live-image-start [--target <target memory="">]
[--name <instance name="">]
[--user_data <user-data>]
[--security-groups <security groups="">]
[--availability-zone <availability zone="">]
[--num-instances <number>]
[--key-name <key name="">] [--params <key=value>]
<live image="">

Start a new instance from a live-image.

Positional arguments:
<live image=""> ID or name of the live-image

Optional arguments:
--target <target memory="">
The memory target of the launched instance
--name <instance name="">
The name of the launched instance
--user_data <user-data>
User data file to pass to be exposed by the metadata
server
--security-groups <security groups="">
comma separated list of security group names.
--availability-zone <availability zone="">
The availability zone for instance placement.
--num-instances <number>
Launch multiple instances at a time
--key-name <key name="">
Key name of keypair that should be created earlier
with the command keypair-add
--params <key=value> Guest parameters to send to vms-agent


$ nova help live-image-delete
usage: nova live-image-delete <live-image>

Delete a live image.

Positional arguments:
<live-image> ID or name of the live-image


$ nova help co-migrate
usage: nova co-migrate [--dest <destination host="">] <instance>

Migrate an instance using VMS.

Positional arguments:
<instance> ID or name of the instance to migrate

Optional arguments:
--dest <destination host="">
Host to migrate to


$ nova help live-image-servers
usage: nova live-image-servers <live-image>

List instances started from this live-image.

Positional arguments:
<live-image> ID or name of the live-image


$ nova help live-image-list
usage: nova live-image-list <server>

List the live images of this instance.

Positional arguments:
<server> ID or name of the instance



Scripting usage
===============

The novaclient hooks can also be accessed directly using the python API.

user = "admin"
apikey = "admin"
project = "openstackDemo"
authurl = "http://localhost:5000/v2.0"

extensions = shell.OpenStackComputeShell()._discover_extensions("1.1")
novaclient = NovaClient(user, apikey, project, authurl, extensions=extensions,
endpoint_type=shell.DEFAULT_NOVA_ENDPOINT_TYPE,
service_type=shell.DEFAULT_NOVA_SERVICE_TYPE)

def wait_for_status(server, status):
while server.status != status:
time.sleep(30)
server = novaclient.cobalt.getserver.id)
return server

def wait_until_gone(server):
try:
while True:
server = novaclient.cobalt.getserver.id)
time.sleep(10)
except Exception, e:
# server is no longer there.
pass

# Boot a new server using flavor 1 and the image passed in as the first argument.
image_id = sys.argv[1]
flavor_id = 1
server = novaclient.servers.create("Gridcentric instance",
image_id,
flavor_id)
server = wait_for_status(server, "ACTIVE")

# Create a live image of the server. This will return an instance of the blessed_server. We need to
# wait until the live image becomes active.
live_image = novaclient.cobalt.live_image_create(server)[0]
live_image = wait_for_status(live_image, "BLESSED")

# Launch a new server based off of the live iamge. Note that we can do this
# by either calling start_live_image on the server itself, or passing the server into the
# cobalt manager.
launched_server = live_image.start_live_image()[0]
launched_server2 = novaclient.cobalt.start_live_image(live_image)[0]

# list the servers that were launched from the live_image.
for s in live_image.list_servers():
print "Server %s was launched from %s" %s.id, live_image.id)

# Delete the launched servers.
launched_server2 = wait_for_status(launched_server2, "ACTIVE")
launched_server2.delete()
launched_server = wait_for_status(launched_server, "ACTIVE")
novaclient.servers.delete(launched_server)

# W need to ensure that the launched instances have been deleted before deleting
# the live image.
wait_until_gone(launched_server2)
wait_until_gone(launched_server)

# Delete the original server. Note we can delete this server
# and keep the blessed one around.
server.delete()

# Discard the blessed server
live_image.delete_live_image()
 
File Type Py Version Uploaded on Size
cobalt_python_novaclient_ext-1.3.107.tar.gz (md5) Source 2014-01-21 12KB
  • Downloads (All Versions):
  • 9 downloads in the last day
  • 137 downloads in the last week
  • 626 downloads in the last month