使用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和许多第三方教程向实例添加浮动ips的方式。
发布于 2018-02-08 18:58:11
AttributeError:'Client‘对象没有属性'floating_ips’
大多数现代OpenStack部署不再使用旧的Nova网络实现,而是使用中子来管理网络和地址。这意味着Nova服务器不提供必要的API端点,因此floating_ips资源和方法不再可用。
您需要与中子交互,以创建一个新的浮动ip地址。
如果您正在编写您自己的OpenStack客户端,您可能需要研究遮荫模块。这将环绕许多OpenStack API,以提供更方便的编程接口。例如,您的代码变成:
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])https://stackoverflow.com/questions/48692372
复制相似问题