连接到openstack失败

时间:2017-04-24 09:26:25

标签: python openstack openstack-shade

我编写了一些python代码来与Openstack实例进行交互;使用shade库。

电话

myinstance = shade.openstack_cloud(cloud='mycloud', **auth_data)

在我的本地Ubuntu安装上正常工作;但是我们的后端失败了#34;服务器(运行RHEL 7.2)。

  

文件" mystuff / core.py",第248行,在_create_connection中       myinstance = shade.openstack_cloud(cloud =' mycloud',** auth_data)

     

文件" /usr/local/lib/python3.5/site-packages/shade-1.20.0-py3.5.egg/shade/ init .py" ,第106行,在openstack_cloud中       返回OpenStackCloud(cloud_config = cloud_config,strict = strict)

     

文件" /usr/local/lib/python3.5/site-packages/shade-1.20.0-py3.5.egg/shade/openstackcloud.py" ;,第312行,在初始化       self._local_ipv6 = _utils.localhost_supports_ipv6()

     

文件" /usr/local/lib/python3.5/site-packages/shade-1.20.0-py3.5.egg/shade/_utils.py",第254行,在localhost_supports_ipv6中       在netifaces.gateways()中返回netifaces.AF_INET6 ['默认']

     

属性错误:模块' netifaces'没有属性' AF_INET6'

该系统的管理员告诉我那里没有启用IPv6;也许这解释了失败。我做了一些研究,但找不到任何可以防止失败的事情。

欢迎任何想法。

更新:我编辑了我的clouds.yml;它看起来像这样:

# openstack/shade config file 
# required to connect provisioning using the shade module
client:
    force_ipv4: true
clouds:
    mycloud:
        auth:
        user_domain_name: xxx
        auth_url: 'someurl'
    region_name: RegionOne

我也试过export OS_FORCE_IPV4=True - 但错误信息仍在那里。

1 个答案:

答案 0 :(得分:2)

如果您浏览OpenStack os-client-config documentation,他们就提到了IPV6相关问题。

  

IPv6是未来,如果您的云,您应该始终使用它   支持它,如果您的本地网络支持它。这两个都是   易于检测和所有友好的软件应该做正确的事情。   但是,有时您可能存在于您拥有的位置   IPv6堆栈,但邪恶的东西导致它实际上不起作用。   在这种情况下,您可以设置配置选项来破坏您   force_ipv4,或OS_FORCE_IPV4布尔环境变量。

因此,使用这些boolean配置可以强制使用适当的网络协议。将以下行添加到clouds.yaml文件

 client:
   force_ipv4: true

会强制IPV4并希望它能解决您的问题。

OP编辑:遗憾的是,上述内容并没有帮助;通过重新加工shade-1.20.0-py3.5.egg/shade/_utils.py来修复它:我更改了返回语句

return netifaces.AF_INET6 in netifaces.gateways()['default']` 

到一个简单的

return False

事情正在发挥作用。当然,这只是一种解决方法;但也提交了一份错误报告。