salt.modules.nova

Module for handling openstack nova calls.

depends:
  • novaclient Python module
configuration:

This module is not usable until the user, password, tenant, and auth URL are specified either in a pillar or in the minion's config file. For example:

keystone.user: admin
keystone.password: verybadpass
keystone.tenant: admin
keystone.auth_url: 'http://127.0.0.1:5000/v2.0/'
# Optional
keystone.region_name: 'regionOne'

If configuration for multiple openstack accounts is required, they can be set up as different configuration profiles: For example:

openstack1:
  keystone.user: admin
  keystone.password: verybadpass
  keystone.tenant: admin
  keystone.auth_url: 'http://127.0.0.1:5000/v2.0/'

openstack2:
  keystone.user: admin
  keystone.password: verybadpass
  keystone.tenant: admin
  keystone.auth_url: 'http://127.0.0.2:5000/v2.0/'

With this configuration in place, any of the nova functions can make use of a configuration profile by declaring it explicitly. For example:

salt '*' nova.flavor_list profile=openstack1
salt.modules.nova.boot(name, flavor_id=0, image_id=0, profile=None)

Boot (create) a new instance

<name> Name of the new instance (must be first) <flavor_id> Unique integer ID for the flavor <image_id> Unique integer ID for the image

CLI Example:

salt '*' nova.boot myinstance flavor_id=4596 image_id=2

The flavor_id and image_id are obtained from nova.flavor_list and nova.image_list

salt '*' nova.flavor_list
salt '*' nova.image_list
salt.modules.nova.delete(instance_id, profile=None)

Delete an instance

<instance_id> ID of the instance to be deleted

CLI Example:

salt '*' nova.delete 1138
salt.modules.nova.flavor_create(name, id=0, ram=0, disk=0, vcpus=1, profile=None)

Add a flavor to nova (nova flavor-create). The following parameters are required:

<name> Name of the new flavor (must be first) <id> Unique integer ID for the new flavor <ram> Memory size in MB <disk> Disk size in GB <vcpus> Number of vcpus

CLI Example:

salt '*' nova.flavor_create myflavor id=6 ram=4096 disk=10 vcpus=1
salt.modules.nova.flavor_delete(id, profile=None)

Delete a flavor from nova by id (nova flavor-delete)

CLI Example:

salt '*' nova.flavor_delete 7'
salt.modules.nova.flavor_list(profile=None)

Return a list of available flavors (nova flavor-list)

CLI Example:

salt '*' nova.flavor_list
salt.modules.nova.image_list(name=None, profile=None)

Return a list of available images (nova images-list + nova image-show) If a name is provided, only that image will be displayed.

CLI Examples:

salt '*' nova.image_list
salt '*' nova.image_list myimage
salt.modules.nova.image_meta_delete(id=None, name=None, keys=None, profile=None)

Delete a key=value pair from the metadata for an image (nova image-meta set)

CLI Examples:

salt '*' nova.image_meta_delete id=6f52b2ff-0b31-4d84-8fd1-af45b84824f6 keys=cheese
salt '*' nova.image_meta_delete name=myimage keys=salad,beans
salt.modules.nova.image_meta_set(id=None, name=None, profile=None, **kwargs)

Sets a key=value pair in the metadata for an image (nova image-meta set)

CLI Examples:

salt '*' nova.image_meta_set id=6f52b2ff-0b31-4d84-8fd1-af45b84824f6 cheese=gruyere
salt '*' nova.image_meta_set name=myimage salad=pasta beans=baked
salt.modules.nova.keypair_add(name, pubfile=None, pubkey=None, profile=None)

Add a keypair to nova (nova keypair-add)

CLI Examples:

salt '*' nova.keypair_add mykey pubfile='/home/myuser/.ssh/id_rsa.pub'
salt '*' nova.keypair_add mykey pubkey='ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuGj4A7HcPLPl/etc== myuser@mybox'
salt.modules.nova.keypair_delete(name, profile=None)

Add a keypair to nova (nova keypair-delete)

CLI Example:

salt '*' nova.keypair_delete mykey'
salt.modules.nova.keypair_list(profile=None)

Return a list of available keypairs (nova keypair-list)

CLI Example:

salt '*' nova.keypair_list
salt.modules.nova.list_(profile=None)

To maintain the feel of the nova command line, this function simply calls the server_list function.

salt.modules.nova.lock(instance_id, profile=None)

Lock an instance

<instance_id> ID of the instance to be locked

CLI Example:

salt '*' nova.lock 1138
salt.modules.nova.resume(instance_id, profile=None)

Resume an instance

<instance_id> ID of the instance to be resumed

CLI Example:

salt '*' nova.resume 1138
salt.modules.nova.secgroup_create(name, description, profile=None)

Add a secgroup to nova (nova secgroup-create)

CLI Example:

salt '*' nova.secgroup_create mygroup 'This is my security group'
salt.modules.nova.secgroup_delete(name, profile=None)

Delete a secgroup to nova (nova secgroup-delete)

CLI Example:

salt '*' nova.secgroup_delete mygroup
salt.modules.nova.secgroup_list(profile=None)

Return a list of available security groups (nova items-list)

CLI Example:

salt '*' nova.secgroup_list
salt.modules.nova.server_list(profile=None)

Return detailed information for an active server

CLI Example:

salt '*' nova.show
salt.modules.nova.server_show(server_id, profile=None)

Return detailed information for an active server

CLI Example:

salt '*' nova.show
salt.modules.nova.show(server_id, profile=None)

To maintain the feel of the nova command line, this function simply calls the server_show function.

salt.modules.nova.suspend(instance_id, profile=None)

Suspend an instance

<instance_id> ID of the instance to be suspended

CLI Example:

salt '*' nova.suspend 1138