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



openstack nova客户端让我很满意。我不知道如何让它使用我指定的本地ssh隧道url,而不是它检索的url。所以:

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)

因为从脚本运行的位置无法访问"oscompute.vip.mysubdomain.mydomain.com:8774"地址。

自我__nova_client=nova_cclient.client()位连接良好,因为它使用'https://localhost:5443/v2.0’——我提供的既定隧道。我只需要一种方法来覆盖"os-computer.vip.mysubdomain.mydomain.com:8774",它正试图用我设置的"localhost:8754"隧道连接到该隧道。但我不知道这是否可能。

任何指导都将不胜感激。

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

最新更新