2014-11-03 54 views
1

從OpenStack的服務器列表我非常新的OpenStack和Python如何讓使用python

我試圖擺脫OpenStack的服務器列表..這裏是代碼

credentials.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 

instance.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 

不知道我在做wrong..Please幫助

+0

是否設置了您的環境變量BILLING?根據你的Python腳本,no:該錯誤意味着在字典os.environ中沒有設置鍵'BILLING'。 – mgaido 2014-11-04 16:51:35

回答

0

如果你正試圖獲得來自OpenStack的服務器的詳細信息,你不需要源碧玲細節。獲取「stackrc/openrc」文件中可用的憑證。

我們使用nova對象調用servers.list()。同樣你可以玩弄實例細節,並獲得更多有關實例的信息here

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 
+0

你能否給你的代碼添加一些上下文? – ppperry 2016-09-04 14:29:37