You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by an...@apache.org on 2016/12/02 04:33:26 UTC
[24/40] libcloud git commit: Add feature to Change NIC network
adapter of a server
Add feature to Change NIC network adapter of a server
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/060954eb
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/060954eb
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/060954eb
Branch: refs/heads/trunk
Commit: 060954eb30dc376f5eec0b49be7a480e25e70c64
Parents: 8404532
Author: Samuel Chong <sa...@gmail.com>
Authored: Thu Nov 17 15:10:08 2016 +1100
Committer: Samuel Chong <sa...@gmail.com>
Committed: Thu Nov 17 15:10:08 2016 +1100
----------------------------------------------------------------------
libcloud/compute/drivers/dimensiondata.py | 31 ++++++++++++++++++++
.../2.4/change_nic_networkadapter_response.xml | 7 +++++
.../test/compute/test_dimensiondata_v2_4.py | 13 ++++++++
3 files changed, 51 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/libcloud/blob/060954eb/libcloud/compute/drivers/dimensiondata.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/dimensiondata.py b/libcloud/compute/drivers/dimensiondata.py
index 6f0a197..eec32a6 100644
--- a/libcloud/compute/drivers/dimensiondata.py
+++ b/libcloud/compute/drivers/dimensiondata.py
@@ -3720,6 +3720,37 @@ class DimensionDataNodeDriver(NodeDriver):
response_code = findtext(response, 'responseCode', TYPES_URN)
return response_code in ['IN_PROGRESS', 'OK']
+ def ex_change_nic_network_adapter(self, nic_id, network_adapter_name):
+ """
+ Change network adapter of a NIC on a cloud server
+
+ :param nic_id: Nic ID
+ :type nic_id: :``str``
+
+ :param network_adapter_name: Network adapter name
+ :type network_adapter_name: :``str``
+
+ :rtype: ``bool``
+ """
+
+ change_elem = ET.Element(
+ 'changeNetworkAdapter',
+ {
+ 'nicId': nic_id,
+ 'xmlns': TYPES_URN
+ })
+
+ ET.SubElement(change_elem, 'networkAdapter').text = \
+ network_adapter_name
+
+ response = self.connection.request_with_orgId_api_2(
+ 'server/changeNetworkAdapter',
+ method='POST',
+ data=ET.tostring(change_elem)).object
+
+ response_code = findtext(response, 'responseCode', TYPES_URN)
+ return response_code in ['IN_PROGRESS', 'OK']
+
def _format_csv(self, http_response):
text = http_response.read()
lines = str.splitlines(ensure_string(text))
http://git-wip-us.apache.org/repos/asf/libcloud/blob/060954eb/libcloud/test/compute/fixtures/dimensiondata/2.4/change_nic_networkadapter_response.xml
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/dimensiondata/2.4/change_nic_networkadapter_response.xml b/libcloud/test/compute/fixtures/dimensiondata/2.4/change_nic_networkadapter_response.xml
new file mode 100644
index 0000000..40b60a5
--- /dev/null
+++ b/libcloud/test/compute/fixtures/dimensiondata/2.4/change_nic_networkadapter_response.xml
@@ -0,0 +1,7 @@
+<response requestId="na/2014-04-14T13:37:20/62f06368-c3fb-11e3-b29c-001517c4643e"
+xmlns="urn:didata.com:api:cloud:types">
+ <operation>CHANGE_NETWORK_ADAPTER</operation>
+ <responseCode>IN_PROGRESS</responseCode>
+ <message>Request to Change Network Adapter for NIC with Id has been
+accepted and is being processed.</message>
+</response>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/libcloud/blob/060954eb/libcloud/test/compute/test_dimensiondata_v2_4.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_dimensiondata_v2_4.py b/libcloud/test/compute/test_dimensiondata_v2_4.py
index d835b5c..caef5a8 100644
--- a/libcloud/test/compute/test_dimensiondata_v2_4.py
+++ b/libcloud/test/compute/test_dimensiondata_v2_4.py
@@ -2045,6 +2045,12 @@ class DimensionData_v2_4_Tests(unittest.TestCase, TestCaseMixin):
nic_id_2='b39d09b8-ea65-424a-8fa6-c6f5a98afc69')
self.assertTrue(success)
+ def test_change_nic_network_adapter(self):
+ success = self.driver.ex_change_nic_network_adapter(
+ nic_id='0c55c269-20a5-4fec-8054-22a245a48fe4',
+ network_adapter_name='E1000')
+ self.assertTrue(success)
+
class InvalidRequestError(Exception):
def __init__(self, tag):
super(InvalidRequestError, self).__init__("Invalid Request - %s" % tag)
@@ -3315,5 +3321,12 @@ class DimensionDataMockHttp(StorageMockHttp, MockHttp):
)
return httplib.OK, body, {}, httplib.responses[httplib.OK]
+ def _caas_2_4_8a8f6abc_2745_4d8a_9cbc_8dabe5a7d0e4_server_changeNetworkAdapter(
+ self, method, url, body, headers):
+ body = self.fixtures.load(
+ '2.4/change_nic_networkadapter_response.xml'
+ )
+ return httplib.OK, body, {}, httplib.responses[httplib.OK]
+
if __name__ == '__main__':
sys.exit(unittest.main())