[
https://issues.apache.org/jira/browse/LIBCLOUD-117?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13125268#comment-13125268
]
Hutson Betts commented on LIBCLOUD-117:
---------------------------------------
My testing was against an OpenNebula 2.2 installation I have running on a
server. However OpenNebula 3.0 seems to be the same. The OpenNebula OCCI API
can be found at: http://opennebula.org/documentation:rel3.0:occidd. In the "The
Compute Resource" sub-section, it shows IP as a tag.
Was the test fixture designed against OpenNebula 1.4? In that version of
OpenNebula "ip" was an attribute. That can be seen in their documentation as
well: http://opennebula.org/documentation:archives:rel1.4:occidd under the "The
Compute Resource" sub-section.
However, your fall-back solution is a better choice since it makes that section
compatible with all versions of OpenNebula's OCCI API.
> OpenNebula Compute Network Description
> --------------------------------------
>
> Key: LIBCLOUD-117
> URL: https://issues.apache.org/jira/browse/LIBCLOUD-117
> Project: Libcloud
> Issue Type: Bug
> Components: Compute
> Affects Versions: 0.5.2, 0.6.0
> Environment: Debian Squeeze using 0.5.2 libcloud extracted archive
> file.
> Reporter: Hutson Betts
> Labels: patch
> Fix For: 0.5.2, 0.6.0
>
> Attachments: opennebula.network.error.py.patch
>
> Original Estimate: 1h
> Remaining Estimate: 1h
>
> An issue exists in the way the OpenNebula driver pulls the network IP address
> for a compute node. It causes the driver to fail every time.
> Function Call:
> cloudProvider.connection.list_nodes()
> Exception Output:
> Traceback (most recent call last):
> File "test.py", line 65, in <module>
> nodes[cloudProvider.host] = cloudProvider.connection.list_nodes()
> File
> "/var/lib/service-manager/service-management-system/lib/apache-libcloud-0.5.2/libcloud/compute/drivers/opennebula.py",
> line 113, in list_nodes
> return self._to_nodes(self.connection.request('/compute').object)
> File
> "/var/lib/service-manager/service-management-system/lib/apache-libcloud-0.5.2/libcloud/compute/drivers/opennebula.py",
> line 188, in _to_nodes
> computes.append(self._to_node(compute))
> File
> "/var/lib/service-manager/service-management-system/lib/apache-libcloud-0.5.2/libcloud/compute/drivers/opennebula.py",
> line 200, in _to_node
> networks.append(element.attrib["ip"])
> KeyError: 'ip'
> Cause:
> for element in compute.findall("NIC"):
> networks.append(element.attrib["ip"])
> OpenNebula/OCCI Compute Definition
> <COMPUTE href="http://www.opennebula.org/compute/32">
> <ID>32</ID>
> ...
> <NIC>
> <NETWORK href="http://www.opennebula.org/network/12"/>
> <MAC>00:ff:72:31:23:17</MAC>
> <IP>192.168.0.12</IP>
> ...
> </NIC>
> ...
> </COMPUTE>
> Conclusion:
> IP address information is not an attribute. Rather it's a child element
> of the NIC.
> Patch:
> With patch, the NIC information is returned correctly:
> <Node: uuid=894yf9823fh9, name=one-34, state=4,
> public_ip=['10.2.0.5', '10.2.2.3'], provider=OpenNebula ...>
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira