With the split of the User Guides, there's no need anymore to have orphan and user_only flags, remove them from the user-guide directory. Only files that keep :orphan: are doc/user-guide/source/hot-guide/hot_advanced_topics.rst and hot_existing_templates.rst since these files are not currently included. Change-Id: I1ac0356d69d8668785f8b1947e8b061731aca747
14 KiB
Compute
To use the information in this section, you must be familiar with OpenStack Compute.
Set environment variables
To set up environmental variables and authenticate against Compute
API endpoints, see sdk_authenticate.
Get OpenStack credentials (API v2)
This example uses the get_nova_credentials_v2
method:
def get_nova_credentials_v2():
d = {}
d['version'] = '2'
d['username'] = os.environ['OS_USERNAME']
d['api_key'] = os.environ['OS_PASSWORD']
d['auth_url'] = os.environ['OS_AUTH_URL']
d['project_id'] = os.environ['OS_TENANT_NAME']
return dThis code resides in the credentials.py file, which all
samples import.
Use the get_nova_credentials_v2() method to populate and
get a dictionary:
credentials = get_nova_credentials_v2()List servers (API v2)
The following program lists servers by using the Compute API v2.
Import the following modules:
from credentials import get_nova_credentials_v2 from novaclient.client import ClientGet Nova credentials. See
Get OpenStack credentials (API v2) <get-openstack-credentials>.Instantiate the
nova_clientclient object by using thecredentialsdictionary object:nova_client = Client(**credentials)List servers by calling
servers.listonnova_clientobject:print(nova_client.servers.list())
List server code listing example
#!/usr/bin/env python
from credentials import get_nova_credentials_v2
from novaclient.client import Client
credentials = get_nova_credentials_v2()
nova_client = Client(**credentials)
print(nova_client.servers.list())Create server (API v2)
The following program creates a server (VM) by using the Compute API v2.
Import the following modules:
import time from credentials import get_nova_credentials_v2 from novaclient.client import ClientGet OpenStack credentials. See
Get OpenStack credentials (API v2) <get-openstack-credentials>.Instantiate the
nova_clientclient object by using thecredentialsdictionary object:nova_client = Client(**credentials)Get the flavor and image to use to create a server. This code uses the
cirrosimage, them1.tinyflavor, and theprivatenetwork:image = nova_client.images.find(name="cirros") flavor = nova_client.flavors.find(name="m1.tiny") net = nova_client.networks.find(label="private")To create the server, use the network, image, and flavor:
nics = [{'net-id': net.id}] instance = nova_client.servers.create(name="vm2", image=image, flavor=flavor, key_name="keypair-1", nics=nics)Run the "Sleep for five seconds" command, and determine whether the server/vm was created by calling
nova_client.servers.list():print("Sleeping for 5s after create command") time.sleep(5) print("List of VMs") print(nova_client.servers.list())
Create server code listing example
#!/usr/bin/env python
import time
from credentials import get_nova_credentials_v2
from novaclient.client import Client
try:
credentials = get_nova_credentials_v2()
nova_client = Client(**credentials)
image = nova_client.images.find(name="cirros")
flavor = nova_client.flavors.find(name="m1.tiny")
net = nova_client.networks.find(label="private")
nics = [{'net-id': net.id}]
instance = nova_client.servers.create(name="vm2", image=image,
flavor=flavor, key_name="keypair-1", nics=nics)
print("Sleeping for 5s after create command")
time.sleep(5)
print("List of VMs")
print(nova_client.servers.list())
finally:
print("Execution Completed")Delete server (API v2)
The following program deletes a server (VM) by using the Compute API v2.
Import the following modules:
import time from credentials import get_nova_credentials_v2 from novaclient.client import ClientGet Nova credentials. See
Get OpenStack credentials (API v2) <get-openstack-credentials>.Instantiate the
nova_clientclient object by using thecredentialsdictionary object:nova_client = Client(**credentials)Determine whether the
vm1server exists:- List servers:
servers_list. - Iterate over
servers_listand compare name withvm1. - If true, set the variable name
server_existstoTrueand break from the for loop:
servers_list = nova_client.servers.list() server_del = "vm1" server_exists = False for s in servers_list: if s.name == server_del: print("This server %s exists" % server_del) server_exists = True break- List servers:
If the server exists, run the
deletemethod of thenova_client.serversobject:nova_client.servers.delete(s)
Delete server code example
#!/usr/bin/env python
from credentials import get_nova_credentials_v2
from novaclient.client import Client
credentials = get_nova_credentials_v2()
nova_client = Client(**credentials)
servers_list = nova_client.servers.list()
server_del = "vm1"
server_exists = False
for s in servers_list:
if s.name == server_del:
print("This server %s exists" % server_del)
server_exists = True
break
if not server_exists:
print("server %s does not exist" % server_del)
else:
print("deleting server..........")
nova_client.servers.delete(s)
print("server %s deleted" % server_del)Update server (API v2)
The following program updates the name of a server (VM) by using the Compute API v2.
Import the following modules:
from credentials import get_nova_credentials_v2 from novaclient.client import Client from utils import print_serverprint_serveris a method defined inutils.pyand prints the server details as shown in the code listing below:def print_server(server): print("-"*35) print("server id: %s" % server.id) print("server name: %s" % server.name) print("server image: %s" % server.image) print("server flavor: %s" % server.flavor) print("server key name: %s" % server.key_name) print("user_id: %s" % server.user_id) print("-"*35)Get OpenStack Credentials. See
Get OpenStack credentials (API v2) <get-openstack-credentials>.Instantiate the
nova_clientclient object by using thecredentialsdictionary object:nova_client = Client(**credentials)Get the server instance using
server_idand print the details by callingprint_servermethod:server_id = '99889c8d-113f-4a7e-970c-77f1916bfe14' server = nova_client.servers.get(server_id) n = server.name print_server(server)Call
server.updateon the server object with the new value fornamevariable:server.update(name = n + '1')Get the updated instance of the server:
server_updated = nova_client.servers.get(server_id)Call
print_serveragain to check the update server details:print_server(server_updated)
Update server code listing example
#!/usr/bin/env python
from credentials import get_nova_credentials_v2
from novaclient.client import Client
from utils import print_server
credentials = get_nova_credentials_v2()
nova_client = Client(**credentials)
# Change the server_id specific to your environment
server_id = '99889c8d-113f-4a7e-970c-77f1916bfe14'
server = nova_client.servers.get(server_id)
n = server.name
print_server(server)
server.update(name=n +'1')
server_updated = nova_client.servers.get(server_id)
print_server(server_updated)List flavors (API v2)
The following program lists flavors and their details by using the Compute API v2.
Import the following modules:
from credentials import get_nova_credentials_v2 from novaclient.client import Client from utils import print_flavorsThe
print_flavorsmethod is defined inutils.pyand prints the flavor details:def print_flavors(flavor_list): for flavor in flavor_list: print("-"*35) print("flavor id : %s" % flavor.id) print("flavor name : %s" % flavor.name) print("-"*35)Get OpenStack credentials.
Get OpenStack credentials (API v2) <get-openstack-credentials>.Instantiate the
nova_clientclient object by using thecredentialsdictionary object:nova_client = Client(**credentials)List flavors by calling
list()onnova_client.flavorsobject:flavors_list = nova_client.flavors.list()Print the flavor details, id and name by calling
print_flavors:print_flavors(flavors_list)
List flavors code listing example
#!/usr/bin/env python
from credentials import get_nova_credentials_v2
from novaclient.client import Client
from utils import print_flavors
credentials = get_nova_credentials_v2()
nova_client = Client(**credentials)
flavors_list = nova_client.flavors.list()
print_flavors(flavors_list)List floating IPs (API v2)
The following program lists the floating IPs and their details by using the Compute API v2.
Import the following modules:
from credentials import get_nova_credentials_v2 from novaclient.client import Client from utils import print_values_ipThe
print_values_ipmethod is defined inutils.pyand prints the floating_ip object details:def print_values_ip(ip_list): ip_dict_lisl = [] for ip in ip_list: print("-"*35) print("fixed_ip : %s" % ip.fixed_ip) print("id : %s" % ip.id) print("instance_id : %s" % ip.instance_id) print("ip : %s" % ip.ip) print("pool : %s" % ip.pool)Get OpenStack credentials. See
Get OpenStack credentials (API v2) <get-openstack-credentials>.Instantiate the
nova_clientclient object by using thecredentialsdictionary object:nova_client = Client(**credentials)List floating IPs by calling
list()onnova_client.floating_ipsobject:ip_list = nova_client.floating_ips.list()Print the floating IP object details by calling
print_values_ip:print_values_ip(ip_list)
List floating IPs code listing example
#!/usr/bin/env python
from credentials import get_nova_credentials_v2
from novaclient.client import Client
from utils import print_values_ip
credentials = get_nova_credentials_v2()
nova_client = Client(**credentials)
ip_list = nova_client.floating_ips.list()
print_values_ip(ip_list)List hosts (API v2)
The following program lists the hosts by using the Compute API v2.
Import the following modules:
from credentials import get_nova_credentials_v2 from novaclient.client import Client from utils import print_hostsThe
print_hostsmethod is defined inutils.pyand prints the host object details:def print_hosts(host_list): for host in host_list: print("-"*35) print("host_name : %s" % host.host_name) print("service : %s" % host.service) print("zone : %s" % host.zone) print("-"*35)Get OpenStack credentials. See
Get OpenStack credentials (API v2) <get-openstack-credentials>.Instantiate the
nova_clientclient object by using thecredentialsdictionary object:nova_client = Client(**credentials)List hosts by calling
list()onnova_client.hostsobject:host_list = nova_client.hosts.list()Print the host object details by calling
print_hosts(host_list):print_hosts(host_list)
List hosts code listing example
#!/usr/bin/env python
from credentials import get_nova_credentials_v2
from novaclient.client import Client
from utils import print_hosts
credentials = get_nova_credentials_v2()
nova_client = Client(**credentials)
host_list = nova_client.hosts.list()
print_hosts(host_list)