1

私はopenstackとpythonに非常に慣れていません

私はopenstackからサーバーのリストを取得しようとしました..ここにコードがあります

資格情報.py

  import os
  def get_nova_credentials_v2():
  d = {}
  d['version'] = '2'
  d['username'] = os.environ['billing']
  d['password'] = os.environ['mypassword']
  d['auth_url'] = os.environ['my auth url']
  d['project_id'] = os.environ['projectname']
  return d

インスタンス.py

  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())

エラーが発生します

    C:\Python27\python.exe C:/Users/ICEClenovos/PycharmProjects/billing/instance.py
     Traceback (most recent call last):
     File "C:/Users/ICEClenovos/PycharmProjects/billing/instance.py", line 5, in <module>
     credentials = get_nova_credentials_v2()
     File "C:\Users\ICEClenovos\PycharmProjects\billing\credentials.py", line 7, in
     get_nova_credentials_v2    
     d['username'] = os.environ['billing']
     File "C:\Python27\lib\os.py", line 423, in __getitem__
     return self.data[key.upper()]
 KeyError: 'BILLING'

  Process finished with exit code 1

どこが間違っているのかわからない..助けてください

4

1 に答える 1

0

Openstack からサーバーの詳細を取得しようとしている場合は、Biling の詳細を入手する必要はありません。「stackrc / openrc」ファイルで利用可能な資格情報を取得します。

nova オブジェクトで servers.list() を呼び出しています。同様に、インスタンスの詳細をいじって、ここでインスタンスに関する詳細情報を取得できます

  from novaclient import client as novaclient

nova = novaclient.Client(version='2.0',username='xxxx',api_key='xxxx',project_id='xxxx',auth_url='http://192.168.12.3:5000/v2.0/',insecure='True')

for server in nova.servers.list():
    print server.id, server.name
于 2016-09-04T07:03:12.767 に答える