gpt4 book ai didi

python - nova 客户端上的 OpenStack Nova floating_ips 不存在

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:22 28 4
gpt4 key购买 nike

使用 nova 版本“2”对设置和功能性 nova 客户端的调用没有 floating_ips 属性。

from novaclient import client as NovaClient
class FloatingIpProvisioner():
def __init__(self, os_session):
self.nova = NovaClient.Client(version="2", session=os_session)

def AddFloatingIpToInstance(self, instance):
self.nova.floating_ip_pools
floating_ip = self.nova.floating_ips.create()
instance = self.nova.servers.find(name="test")
instance.add_floating_ip(floating_ip)
return floating_ip

instance = NovaClient.Client(version="2", session=session).servers.find(name="ansiblemaster")
floatingIp = FloatingIpProvisioner(session).AddFloatingIpToInstance(instance)

调用上述文件时出现错误:

File "provision.py", line 68, in AddFloatingIpToInstance
floating_ip = self.nova.floating_ips.create()
AttributeError: 'Client' object has no attribute 'floating_ips'

这是 Openstack 和许多第 3 方教程向实例添加 float ip 的方式。

最佳答案

AttributeError: 'Client' object has no attribute 'floating_ips'

大多数现代 OpenStack 部署不再使用遗留的 Nova 网络实现,而是使用 Neutron管理网络和地址。这意味着 Nova 服务器不提供必要的 API 端点,因此 floating_ips 资源和方法不再可用。

您需要与 Neutron 交互才能创建新的 float IP 地址。

如果您正在编写自己的 OpenStack 客户端,您可能需要调查 shade模块。这封装了许多 OpenStack API,以提供更方便的编程接口(interface)。例如,您的代码变为:

import shade

cloud = shade.openstack_cloud()

def AddFloatingIpToInstance(self, server_name, external_network='public'):
server = cloud.get_server(server_name)
ip = cloud.create_floating_ip(external_network)
cloud.add_ips_to_server(server, ips=[ip])

关于python - nova 客户端上的 OpenStack Nova floating_ips 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48692372/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com