allow for private IPv4 when adding a NIC
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/44d72173 Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/44d72173 Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/44d72173 Branch: refs/heads/trunk Commit: 44d721735706f6f0a0709d73eaee589e96e7a0f7 Parents: e69a7cb Author: Bernard Paques <bernard.paq...@gmail.com> Authored: Tue Apr 12 22:26:04 2016 +0200 Committer: anthony-shaw <anthonys...@apache.org> Committed: Wed Apr 13 21:58:36 2016 +1000 ---------------------------------------------------------------------- libcloud/compute/drivers/dimensiondata.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/44d72173/libcloud/compute/drivers/dimensiondata.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/drivers/dimensiondata.py b/libcloud/compute/drivers/dimensiondata.py index d618a33..723f21c 100644 --- a/libcloud/compute/drivers/dimensiondata.py +++ b/libcloud/compute/drivers/dimensiondata.py @@ -794,25 +794,39 @@ class DimensionDataNodeDriver(NodeDriver): rules.extend(self._to_anti_affinity_rules(result)) return rules - def ex_attach_node_to_vlan(self, node, vlan): + def ex_attach_node_to_vlan(self, node, vlan=None, private_ipv4=None): """ Attach a node to a VLAN by adding an additional NIC to the node on the target VLAN. The IP will be automatically - assigned based on the VLAN IP network space. + assigned based on the VLAN IP network space. Alternatively, provide + a private IPv4 address instead of VLAN information, and this will + be assigned to the node on corresponding NIC. :param node: Node which should be used :type node: :class:`Node` :param vlan: VLAN to attach the node to + (required unless private_ipv4) :type vlan: :class:`DimensionDataVlan` + :keyword private_ipv4: Private nic IPv4 Address + (required unless vlan) + :type private_ipv4: ``str`` + :rtype: ``bool`` """ request = ET.Element('addNic', {'xmlns': TYPES_URN}) ET.SubElement(request, 'serverId').text = node.id nic = ET.SubElement(request, 'nic') - ET.SubElement(nic, 'vlanId').text = vlan.id + + if vlan is not None: + ET.SubElement(nic, 'vlanId').text = vlan.id + elif primary_ipv4 is not None: + ET.SubElement(nic, 'privateIpv4').text = private_ipv4 + else: + raise ValueError("One of vlan or primary_ipv4 " + "must be specified") response = self.connection.request_with_orgId_api_2( 'server/addNic',