このセクションにある情報を使用する場合、OpenStack Compute に慣れている必要があります。
この例は get_nova_credentials_v2
メソッドを使用します。
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 d
このコードは、credentials.py
ファイルにあり、ここからすべてのサンプルがインポートされます。
get_nova_credentials_v2()
メソッドを使用して、辞書を生成し、取得します。
credentials = get_nova_credentials_v2()
以下のプログラムは、Compute API v2 を用いてサーバーを一覧表示します。
以下のモジュールをインポートします。
from credentials import get_nova_credentials_v2
from novaclient.client import Client
Nova クレデンシャルを取得します。Get OpenStack credentials (API v2) を参照してください。
credentials
辞書オブジェクトを使用して、nova_client
クライアントオブジェクトをインスタンス化します。
nova_client = Client(**credentials)
nova_client
オブジェクトの servers.list
を呼び出し、サーバーを一覧表示します。
print(nova_client.servers.list())
#!/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())
以下のプログラムは、Compute API v2 を用いてサーバー (VM) を作成します。
以下のモジュールをインポートします。
import time
from credentials import get_nova_credentials_v2
from novaclient.client import Client
OpenStack クレデンシャルを取得します。Get OpenStack credentials (API v2) を参照してください。
credentials
辞書オブジェクトを使用して、nova_client
クライアントオブジェクトをインスタンス化します。
nova_client = Client(**credentials)
Get the flavor and image to use to create a server. This code uses
the cirros
image, the m1.tiny
flavor, and the private
network:
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)
「5 秒間スリープする」コマンドを実行します。nova_client.servers.list()
を呼び出して、サーバーや仮想マシンが作成されたかどうかを確認します。
print("Sleeping for 5s after create command")
time.sleep(5)
print("List of VMs")
print(nova_client.servers.list())
#!/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")
以下のプログラムは、Compute API v2 を用いてサーバー (VM) を削除します。
以下のモジュールをインポートします。
import time
from credentials import get_nova_credentials_v2
from novaclient.client import Client
Nova クレデンシャルを取得します。Get OpenStack credentials (API v2) を参照してください。
credentials
辞書オブジェクトを使用して、nova_client
クライアントオブジェクトをインスタンス化します。
nova_client = Client(**credentials)
vm1
サーバーが存在するかどうかを確認します。
servers_list
)。servers_list
and compare name with vm1
.server_exists
変数を True
に設定し、for ループを抜けます。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
サーバーが存在する場合、nova_client.servers
オブジェクトの delete
メソッドを実行します。
nova_client.servers.delete(s)
#!/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)
以下のプログラムは、Compute API v2 を用いてサーバー (VM) の名前を更新します。
以下のモジュールをインポートします。
from credentials import get_nova_credentials_v2
from novaclient.client import Client
from utils import print_server
print_server
は utils.py
に定義されているメソッドです。以下のコード全体に示されたとおり、サーバーの詳細を表示します。
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)
OpenStack クレデンシャルを取得します。Get OpenStack credentials (API v2) を参照してください。
credentials
辞書オブジェクトを使用して、nova_client
クライアントオブジェクトをインスタンス化します。
nova_client = Client(**credentials)
server_id
を用いて server インスタンスを取得します。print_server
メソッドを呼び出し、詳細を表示します。
server_id = '99889c8d-113f-4a7e-970c-77f1916bfe14'
server = nova_client.servers.get(server_id)
n = server.name
print_server(server)
新しい name
変数の値を用いて、server オブジェクトの server.update
を呼び出します。
server.update(name = n + '1')
サーバーの更新されたインスタンスを取得します。
server_updated = nova_client.servers.get(server_id)
再び print_server
を呼び出し、更新したサーバーの詳細を確認します。
print_server(server_updated)
#!/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)
以下のプログラムは、Compute API v2 を用いてフレーバーとその詳細を一覧表示します。
以下のモジュールをインポートします。
from credentials import get_nova_credentials_v2
from novaclient.client import Client
from utils import print_flavors
print_flavors
メソッドは utils.py
に定義されています。フレーバーの詳細を表示します。
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)
OpenStack クレデンシャルを取得します。Get OpenStack credentials (API v2) を参照してください。
credentials
辞書オブジェクトを使用して、nova_client
クライアントオブジェクトをインスタンス化します。
nova_client = Client(**credentials)
nova_client.flavors
オブジェクトの list()
を呼び出し、フレーバーを一覧表示します。
flavors_list = nova_client.flavors.list()
print_flavors
を呼び出し、フレーバーの詳細、ID、名前を表示します。
print_flavors(flavors_list)
#!/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)
以下のプログラムは、Compute API v2 を用いて Floating IP アドレスとその詳細を一覧表示します。
以下のモジュールをインポートします。
from credentials import get_nova_credentials_v2
from novaclient.client import Client
from utils import print_values_ip
print_hosts
メソッドは utils.py
に定義されています。floating_ip オブジェクトの詳細を表示します。
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)
OpenStack クレデンシャルを取得します。Get OpenStack credentials (API v2) を参照してください。
credentials
辞書オブジェクトを使用して、nova_client
クライアントオブジェクトをインスタンス化します。
nova_client = Client(**credentials)
nova_client.floating_ips
オブジェクトの list()
を呼び出し、Floating IP を一覧表示します。
ip_list = nova_client.floating_ips.list()
print_values_ip
を呼び出し、Floating IP オブジェクトの詳細を表示します。
print_values_ip(ip_list)
#!/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)
以下のプログラムは、Compute API v2 を用いてホストを一覧表示します。
以下のモジュールをインポートします。
from credentials import get_nova_credentials_v2
from novaclient.client import Client
from utils import print_hosts
print_hosts
メソッドは utils.py
に定義されています。host オブジェクトの詳細を表示します。
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)
OpenStack クレデンシャルを取得します。Get OpenStack credentials (API v2) を参照してください。
credentials
辞書オブジェクトを使用して、nova_client
クライアントオブジェクトをインスタンス化します。
nova_client = Client(**credentials)
nova_client.hosts
オブジェクトの list()
を呼び出し、ホストを一覧表示します。
host_list = nova_client.hosts.list()
print_hosts(host_list)
を呼び出し、host オブジェクトの詳細を表示します。
print_hosts(host_list)
#!/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)
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.