Skip to content
This repository was archived by the owner on Mar 6, 2024. It is now read-only.

Commit 1d782f3

Browse files
committed
Move update_nic to other nic methods
1 parent c5c0766 commit 1d782f3

File tree

1 file changed

+57
-57
lines changed

1 file changed

+57
-57
lines changed

Diff for: pyvcloud/vcd/vm.py

+57-57
Original file line numberDiff line numberDiff line change
@@ -697,6 +697,63 @@ def list_nics(self):
697697
nics.append(nic)
698698
return nics
699699

700+
def update_nic(self, network_name, nic_id=0,
701+
is_connected=False,
702+
is_primary=False,
703+
ip_address_mode=None,
704+
ip_address=None,
705+
adapter_type=None):
706+
"""Updates a nic of the VM.
707+
708+
:param str network_name: name of the network to be modified.
709+
:param bool is_connected: True, if the nic has to be connected.
710+
:param bool is_primary: True, if its a primary nic of the VM.
711+
:param str ip_address_mode: One of DHCP|POOL|MANUAL|NONE.
712+
:param str ip_address: to be set an ip in case of MANUAL mode.
713+
:param str adapter_type: nic adapter type.One of NetworkAdapterType
714+
values.
715+
716+
:return: an object containing EntityType.TASK XML data which represents
717+
the asynchronous task adding a nic.
718+
719+
:rtype: lxml.objectify.ObjectifiedElement
720+
"""
721+
# get network connection section.
722+
net_conn_section = self.get_resource().NetworkConnectionSection
723+
nic_index = 0
724+
nic_not_found = True
725+
if hasattr(net_conn_section, 'NetworkConnection'):
726+
for nc in net_conn_section.NetworkConnection:
727+
if nc.get('network') == network_name:
728+
if int(nc.NetworkConnectionIndex.text) == nic_id:
729+
nic_not_found = False
730+
if ip_address is not None:
731+
nc.IpAddress = E.IpAddress(ip_address)
732+
nc.IsConnected = E.IsConnected(is_connected)
733+
if ip_address_mode is not None:
734+
nc.IpAddressAllocationMode = \
735+
E.IpAddressAllocationMode(ip_address_mode)
736+
if adapter_type is not None:
737+
nc.NetworkAdapterType = E.NetworkAdapterType(
738+
adapter_type)
739+
if is_primary:
740+
nic_index = nc.NetworkConnectionIndex
741+
break
742+
743+
if nic_not_found:
744+
raise EntityNotFoundException(
745+
'Nic with name \'%s\' and index \'%s\' is not found in the VM \'%s\'' %
746+
(network_name, nic_id, self.get_resource().get('name')))
747+
748+
if is_primary:
749+
nic_index = int(nic_index.text)
750+
net_conn_section.PrimaryNetworkConnectionIndex = \
751+
E.PrimaryNetworkConnectionIndex(nic_index)
752+
753+
return self.client.put_linked_resource(
754+
net_conn_section, RelationType.EDIT,
755+
EntityType.NETWORK_CONNECTION_SECTION.value, net_conn_section)
756+
700757
def delete_nic(self, index):
701758
"""Deletes a nic from the VM.
702759
@@ -1357,63 +1414,6 @@ def relocate(self, datastore_id):
13571414
EntityType.RELOCATE_PARAMS.value,
13581415
relocate_params)
13591416

1360-
def update_nic(self, network_name, nic_id=0,
1361-
is_connected=False,
1362-
is_primary=False,
1363-
ip_address_mode=None,
1364-
ip_address=None,
1365-
adapter_type=None):
1366-
"""Updates a nic of the VM.
1367-
1368-
:param str network_name: name of the network to be modified.
1369-
:param bool is_connected: True, if the nic has to be connected.
1370-
:param bool is_primary: True, if its a primary nic of the VM.
1371-
:param str ip_address_mode: One of DHCP|POOL|MANUAL|NONE.
1372-
:param str ip_address: to be set an ip in case of MANUAL mode.
1373-
:param str adapter_type: nic adapter type.One of NetworkAdapterType
1374-
values.
1375-
1376-
:return: an object containing EntityType.TASK XML data which represents
1377-
the asynchronous task adding a nic.
1378-
1379-
:rtype: lxml.objectify.ObjectifiedElement
1380-
"""
1381-
# get network connection section.
1382-
net_conn_section = self.get_resource().NetworkConnectionSection
1383-
nic_index = 0
1384-
nic_not_found = True
1385-
if hasattr(net_conn_section, 'NetworkConnection'):
1386-
for nc in net_conn_section.NetworkConnection:
1387-
if nc.get('network') == network_name:
1388-
if int(nc.NetworkConnectionIndex.text) == nic_id:
1389-
nic_not_found = False
1390-
if ip_address is not None:
1391-
nc.IpAddress = E.IpAddress(ip_address)
1392-
nc.IsConnected = E.IsConnected(is_connected)
1393-
if ip_address_mode is not None:
1394-
nc.IpAddressAllocationMode = \
1395-
E.IpAddressAllocationMode(ip_address_mode)
1396-
if adapter_type is not None:
1397-
nc.NetworkAdapterType = E.NetworkAdapterType(
1398-
adapter_type)
1399-
if is_primary:
1400-
nic_index = nc.NetworkConnectionIndex
1401-
break
1402-
1403-
if nic_not_found:
1404-
raise EntityNotFoundException(
1405-
'Nic with name \'%s\' and index \'%s\' is not found in the VM \'%s\'' %
1406-
(network_name, nic_id, self.get_resource().get('name')))
1407-
1408-
if is_primary:
1409-
nic_index = int(nic_index.text)
1410-
net_conn_section.PrimaryNetworkConnectionIndex = \
1411-
E.PrimaryNetworkConnectionIndex(nic_index)
1412-
1413-
return self.client.put_linked_resource(
1414-
net_conn_section, RelationType.EDIT,
1415-
EntityType.NETWORK_CONNECTION_SECTION.value, net_conn_section)
1416-
14171417
def get_operating_system_section(self):
14181418
"""Get operating system section of VM.
14191419

0 commit comments

Comments
 (0)