首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nova客户端的OpenStack nova floating_ips不存在

Nova客户端的OpenStack nova floating_ips不存在
EN

Stack Overflow用户
提问于 2018-02-08 18:25:31
回答 1查看 555关注 0票数 2

使用nova版本"2“对安装程序和功能nova客户端的调用没有floating_ips属性。

代码语言:javascript
复制
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)

当调用上面的文件时,我们有错误:

代码语言:javascript
复制
File "provision.py", line 68, in AddFloatingIpToInstance
    floating_ip = self.nova.floating_ips.create()
AttributeError: 'Client' object has no attribute 'floating_ips'

这就是Openstack和许多第三方教程向实例添加浮动ips的方式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-08 18:58:11

AttributeError:'Client‘对象没有属性'floating_ips’

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

您需要与中子交互,以创建一个新的浮动ip地址。

如果您正在编写您自己的OpenStack客户端,您可能需要研究遮荫模块。这将环绕许多OpenStack API,以提供更方便的编程接口。例如,您的代码变成:

代码语言:javascript
复制
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])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48692372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档