2015-03-31 62 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

相关问题