2015-03-31 22 views
0

openstack nova客戶端給我適合。我無法弄清楚如何讓它使用本地ssh隧道URL我指定,而不是它檢索到的一個。所以:如何獲取nova客戶端(v1.1)在檢索服務器列表時使用ssh隧道

from novaclient.v1_1 import client as nova_client 
from pprint import pprint 

self.__nova_client = nova_client.Client(
    'myusername', 
    'mypassword', 
    'mytenantname', 
    'https://localhost:5443/v2.0', 
    service_type='compute', 
    insecure=True 
) 
for server in self.__nova_client.servers.list(): 
    pprint(server) 

產量...

requests.exceptions.ConnectionError: HTTPConnectionPool(host='os-compute.vip.mysubdomain.mydomain.com', port=8774): Max retries exceeded with url: /v2/aa0dffecaef543aca072a26fdff5c92b/servers/detail (Caused by <class 'socket.error'>: [Errno 111] Connection refused) 

因爲 「os-compute.vip.mysubdomain.mydomain.com:8774」 地址是從腳本運行的位置不可達。

自我.__ nova_client = nova_client.Client()位連接正常,因爲它使用'https://localhost:5443/v2.0' - 我提供的已建立的隧道。我只需要一種方法來覆蓋它試圖連接到我設置的「localhost:8774」隧道的「os-compute.vip.mysubdomain.mydomain.com:8774」。但我無法弄清楚這是否可能。

任何指導將不勝感激。

回答

0

您的nova客戶端正在通過本地主機上的隧道設置從keystone提取服務目錄。您將需要顯式覆蓋服務目錄中指定的端點。 一種方法是明確指定端點,而一些客戶端允許您直接指定建設novaclient不建立的端點,在構建對象並將其替換爲localhost地址後,請看nova_client.management_url

相關問題