You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by vd...@apache.org on 2018/07/06 10:05:29 UTC

[1/2] libcloud git commit: Add ex_create_port and ex_get_port to Openstackv2 driver

Repository: libcloud
Updated Branches:
  refs/heads/trunk 8a9ffd1df -> 370964d5b


Add ex_create_port and ex_get_port to Openstackv2 driver

Signed-off-by: Rick van de Loo <ri...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/6f610cab
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/6f610cab
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/6f610cab

Branch: refs/heads/trunk
Commit: 6f610cab262ccdb280fe03694eb40393876f9799
Parents: 8a9ffd1
Author: Alexander Grooff <al...@gmail.com>
Authored: Fri Jul 6 10:53:13 2018 +0200
Committer: Rick van de Loo <ri...@gmail.com>
Committed: Fri Jul 6 12:01:23 2018 +0200

----------------------------------------------------------------------
 libcloud/compute/drivers/openstack.py           | 50 ++++++++++++++++++
 .../fixtures/openstack_v1.1/_port_v2.json       | 32 ++++++++++++
 libcloud/test/compute/test_openstack.py         | 53 +++++++++++++++++++-
 3 files changed, 134 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/6f610cab/libcloud/compute/drivers/openstack.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/openstack.py b/libcloud/compute/drivers/openstack.py
index e0a5ff0..2ce9f55 100644
--- a/libcloud/compute/drivers/openstack.py
+++ b/libcloud/compute/drivers/openstack.py
@@ -2604,6 +2604,7 @@ class OpenStack_2_NodeDriver(OpenStack_1_1_NodeDriver):
             created=created,
             driver=self,
             extra=dict(
+                admin_state_up=element['admin_state_up'],
                 allowed_address_pairs=element['allowed_address_pairs'],
                 binding_vnic_type=element['binding:vnic_type'],
                 device_id=element['device_id'],
@@ -2849,6 +2850,55 @@ class OpenStack_2_NodeDriver(OpenStack_1_1_NodeDriver):
             method='POST', data=data
         ).success()
 
+    def ex_create_port(self, network, description=None,
+                       admin_state_up=True, name=None):
+        """
+        Creates a new OpenStack_2_PortInterface
+
+        :param      network: ID of the network where the newly created
+                    port should be attached to
+        :type       network: :class:`OpenStackNetwork`
+
+        :param      description: Description of the port
+        :type       description: str
+
+        :param      admin_state_up: The administrative state of the
+                    resource, which is up or down
+        :type       admin_state_up: bool
+
+        :param      name: Human-readable name of the resource
+        :type       name: str
+
+        :rtype: :class:`OpenStack_2_PortInterface`
+        """
+        data = {
+            'port':
+                {
+                    'description': description or '',
+                    'admin_state_up': admin_state_up,
+                    'name': name or '',
+                    'network_id': network.id,
+                }
+        }
+        response = self.network_connection.request(
+            '/v2.0/ports', method='POST', data=data
+        )
+        return self._to_port(response.object['port'])
+
+    def ex_get_port(self, port_interface_id):
+        """
+        Retrieve the OpenStack_2_PortInterface with the given ID
+
+        :param      port_interface_id: ID of the requested port
+        :type       port_interface_id: str
+
+        :return: :class:`OpenStack_2_PortInterface`
+        """
+        response = self.network_connection.request(
+            '/v2.0/ports/{}'.format(port_interface_id), method='GET'
+        )
+        return self._to_port(response.object['port'])
+
 
 class OpenStack_1_1_FloatingIpPool(object):
     """

http://git-wip-us.apache.org/repos/asf/libcloud/blob/6f610cab/libcloud/test/compute/fixtures/openstack_v1.1/_port_v2.json
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/openstack_v1.1/_port_v2.json b/libcloud/test/compute/fixtures/openstack_v1.1/_port_v2.json
new file mode 100644
index 0000000..a86a8e6
--- /dev/null
+++ b/libcloud/test/compute/fixtures/openstack_v1.1/_port_v2.json
@@ -0,0 +1,32 @@
+{
+  "port": {
+    "status": "BUILD",
+    "extra_dhcp_opts": [],
+    "description": "Some port description",
+    "allowed_address_pairs": [],
+    "tags": [],
+    "network_id": "123c8a8c-6427-4e8f-a805-2035365f4d43",
+    "tenant_id": "abcdec85bee34bb0a44ab8255eb36abc",
+    "created_at": "2018-07-04T14:38:18Z",
+    "admin_state_up": true,
+    "updated_at": "2018-07-05T14:40:43Z",
+    "binding:vnic_type": "normal",
+    "device_owner": "compute:nova",
+    "name": "Some port name",
+    "revision_number": 2036,
+    "mac_address": "ba:12:12:8a:b2:73",
+    "port_security_enabled": true,
+    "project_id": "abcdec85bee34bb0a44ab8255eb36abc",
+    "fixed_ips": [
+      {
+        "subnet_id": "1231a12a-125b-4329-a3c5-312ea86a7577",
+        "ip_address": "12.123.12.32"
+      }
+    ],
+    "id": "126da55e-cfcb-41c8-ae39-a26cb8a7e723",
+    "security_groups": [
+      "abcfb112-5b5c-4c6b-8b3f-dbaee57df440"
+    ],
+    "device_id": "95e75643-2008-123f-ad13-e20ea64e3c87"
+  }
+}

http://git-wip-us.apache.org/repos/asf/libcloud/blob/6f610cab/libcloud/test/compute/test_openstack.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_openstack.py b/libcloud/test/compute/test_openstack.py
index 19b75e7..4462b34 100644
--- a/libcloud/test/compute/test_openstack.py
+++ b/libcloud/test/compute/test_openstack.py
@@ -47,7 +47,7 @@ from libcloud.compute.drivers.openstack import (
     OpenStack_1_1_FloatingIpAddress, OpenStackKeyPair,
     OpenStack_1_0_Connection,
     OpenStackNodeDriver,
-    OpenStack_2_NodeDriver, OpenStack_2_PortInterfaceState)
+    OpenStack_2_NodeDriver, OpenStack_2_PortInterfaceState, OpenStackNetwork)
 from libcloud.compute.base import Node, NodeImage, NodeSize
 from libcloud.pricing import set_pricing, clear_pricing_data
 
@@ -1718,6 +1718,51 @@ class OpenStack_2_Tests(OpenStack_1_1_Tests):
         )
         self.assertEqual(port.extra['name'], '')
 
+    def test_ex_create_port(self):
+        network = OpenStackNetwork(id='123c8a8c-6427-4e8f-a805-2035365f4d43', name='test-network',
+                                   cidr='1.2.3.4', driver=self.driver)
+        port = self.driver.ex_create_port(network=network, description='Some port description', name='Some port name',
+                                          admin_state_up=True)
+
+        self.assertEqual(port.id, '126da55e-cfcb-41c8-ae39-a26cb8a7e723')
+        self.assertEqual(port.state, OpenStack_2_PortInterfaceState.BUILD)
+        self.assertEqual(port.created, '2018-07-04T14:38:18Z')
+        self.assertEqual(
+            port.extra['network_id'],
+            '123c8a8c-6427-4e8f-a805-2035365f4d43'
+        )
+        self.assertEqual(
+            port.extra['project_id'],
+            'abcdec85bee34bb0a44ab8255eb36abc'
+        )
+        self.assertEqual(
+            port.extra['tenant_id'],
+            'abcdec85bee34bb0a44ab8255eb36abc'
+        )
+        self.assertEqual(port.extra['admin_state_up'], True)
+        self.assertEqual(port.extra['name'], 'Some port name')
+        self.assertEqual(port.extra['description'], 'Some port description')
+
+    def test_ex_get_port(self):
+        port = self.driver.ex_get_port('126da55e-cfcb-41c8-ae39-a26cb8a7e723')
+
+        self.assertEqual(port.id, '126da55e-cfcb-41c8-ae39-a26cb8a7e723')
+        self.assertEqual(port.state, OpenStack_2_PortInterfaceState.BUILD)
+        self.assertEqual(port.created, '2018-07-04T14:38:18Z')
+        self.assertEqual(
+            port.extra['network_id'],
+            '123c8a8c-6427-4e8f-a805-2035365f4d43'
+        )
+        self.assertEqual(
+            port.extra['project_id'],
+            'abcdec85bee34bb0a44ab8255eb36abc'
+        )
+        self.assertEqual(
+            port.extra['tenant_id'],
+            'abcdec85bee34bb0a44ab8255eb36abc'
+        )
+        self.assertEqual(port.extra['name'], 'Some port name')
+
     def test_ex_delete_port(self):
         ports = self.driver.ex_list_ports()
         port = ports[0]
@@ -1965,12 +2010,18 @@ class OpenStack_1_1_MockHttp(MockHttp, unittest.TestCase):
         if method == "GET":
             body = self.fixtures.load('_ports_v2.json')
             return (httplib.OK, body, self.json_content_headers, httplib.responses[httplib.OK])
+        elif method == "POST":
+            body = self.fixtures.load('_port_v2.json')
+            return (httplib.OK, body, self.json_content_headers, httplib.responses[httplib.OK])
         else:
             raise NotImplementedError()
 
     def _v2_1337_v2_0_ports_126da55e_cfcb_41c8_ae39_a26cb8a7e723(self, method, url, body, headers):
         if method == "DELETE":
             return (httplib.NO_CONTENT, "", {}, httplib.responses[httplib.NO_CONTENT])
+        elif method == "GET":
+            body = self.fixtures.load('_port_v2.json')
+            return (httplib.OK, body, self.json_content_headers, httplib.responses[httplib.OK])
         else:
             raise NotImplementedError()
 


[2/2] libcloud git commit: Add changes for #1226

Posted by vd...@apache.org.
Add changes for #1226

Closes #1226


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/370964d5
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/370964d5
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/370964d5

Branch: refs/heads/trunk
Commit: 370964d5bad3dc97dbaa9b921b86b4a6a98b9c79
Parents: 6f610ca
Author: Rick van de Loo <ri...@gmail.com>
Authored: Fri Jul 6 12:03:24 2018 +0200
Committer: Rick van de Loo <ri...@gmail.com>
Committed: Fri Jul 6 12:03:24 2018 +0200

----------------------------------------------------------------------
 CHANGES.rst | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/370964d5/CHANGES.rst
----------------------------------------------------------------------
diff --git a/CHANGES.rst b/CHANGES.rst
index 2f790ed..d7e1e55 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -90,6 +90,9 @@ Compute
 - [OpenStack] Implement port attaching/detaching (GITHUB-1225)
   [Rick van de Loo]
 
+- [OpenStack] Add methods for getting and creating ports (GITHUB-1226)
+  [Alexander Grooff]
+
 - [OpenStack] Add get_user method (GITHUB-1216)
   [Ken Dreyer]