如何让nova客户端(v1.1)在检索服务器列表时使用ssh隧道

时间:2015-03-31 02:08:42

标签: python-2.7 openstack openstack-nova

openstack nova客户端正在给我配合。我无法弄清楚如何使用我指定的本地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)

因为&#34; os-compute.vip.mysubdomain.mydomain.com:8774"地址无法从脚本运行的位置访问。

自我.__ nova_client = nova_client.Client()位连接正常,因为它使用&#39; https://localhost:5443/v2.0&#39; - 我提供的既定隧道。我只需要一种方法来覆盖&#34; os-compute.vip.mysubdomain.mydomain.com:8774&#34;他试图用&#34; localhost:8774&#34;我建立的隧道。但我无法弄清楚这是否可行。

任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您的nova客户端正在通过localhost上的隧道设置从keystone提取服务目录。您需要显式覆盖服务目录中指定的端点。 一种方法是显式指定端点,而一些客户端允许您直接指定构造novaclient不构建的端点,在构造对象后将其替换为nova_client.management_url并将其替换为localhost地址。