[ 
https://issues.apache.org/jira/browse/LIBCLOUD-117?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13125705#comment-13125705
 ] 

Tomaz Muraus commented on LIBCLOUD-117:
---------------------------------------

Yes, I think the first step would be to create three new classes:

- OpenNebulaBaseNodeDriver (common functionality)
- OpenNebula13NodeDriver (or whatever the version is)
- OpenNebula30NodeDriver (inherits from base, provided 3.0 specific stuff)

After we have that we should also modify OpenNebulaNodeDriver constructor 
method. Modified construct method should take "version" as the last argument 
and then instantiate a correct class (basically it will act as a factory 
method).

This last class is also not so important and I can finish it when the first 
three classes are sorted out.

Let me know if you have any questions or need help.
                
> 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.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

        

Reply via email to