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())