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
,并将其替换为本地主机地址。