]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
LinuxBridge: set port status as 'DOWN' on creation
authorGary Kotton <gkotton@redhat.com>
Wed, 23 Jan 2013 07:39:18 +0000 (07:39 +0000)
committerGary Kotton <gkotton@redhat.com>
Wed, 23 Jan 2013 16:39:13 +0000 (16:39 +0000)
When a port is created the initial status will be 'DOWN'. The agent
in turn will update the plugin of the actual port status.

Change-Id: I66b51501304f7cb3f0157a4adaec4b82c62b30a3

quantum/db/db_base_plugin_v2.py
quantum/plugins/linuxbridge/lb_quantum_plugin.py
quantum/tests/unit/linuxbridge/test_linuxbridge_plugin.py
quantum/tests/unit/test_db_plugin.py

index ad0ddae900a76cf5c47f4cb41d645ee1041515e4..16cee3cd49d8c9272e9a4d220170ef39f233b286 100644 (file)
@@ -1213,13 +1213,18 @@ class QuantumDbPluginV2(quantum_plugin_base_v2.QuantumPluginBaseV2):
             # Returns the IP's for the port
             ips = self._allocate_ips_for_port(context, network, port)
 
+            if 'status' not in p:
+                status = constants.PORT_STATUS_ACTIVE
+            else:
+                status = p['status']
+
             port = models_v2.Port(tenant_id=tenant_id,
                                   name=p['name'],
                                   id=port_id,
                                   network_id=network_id,
                                   mac_address=mac_address,
                                   admin_state_up=p['admin_state_up'],
-                                  status=constants.PORT_STATUS_ACTIVE,
+                                  status=status,
                                   device_id=p['device_id'],
                                   device_owner=p['device_owner'])
             context.session.add(port)
index 976178d0dcb6a7ba46f9f8b6640ad736e24b9ed0..89b3d7a015fbd583f7550fb797bc0cff709e0cad 100644 (file)
@@ -481,6 +481,9 @@ class LinuxBridgePluginV2(db_base_plugin_v2.QuantumDbPluginV2,
         with session.begin(subtransactions=True):
             self._ensure_default_security_group_on_port(context, port)
             sgids = self._get_security_groups_on_port(context, port)
+            # Set port status as 'DOWN'. This will be updated by agent
+            port['port']['status'] = q_const.PORT_STATUS_DOWN
+
             port = super(LinuxBridgePluginV2,
                          self).create_port(context, port)
             self._process_port_create_security_group(
index 1112a0c91b2aa26e967b5e61b07987a1929b8332..bd41d4f0ae3f90e0588595861d7b608e1587768d 100644 (file)
@@ -26,6 +26,7 @@ class LinuxBridgePluginV2TestCase(test_plugin.QuantumDbPluginV2TestCase):
 
     def setUp(self):
         super(LinuxBridgePluginV2TestCase, self).setUp(PLUGIN_NAME)
+        self.port_create_status = 'DOWN'
 
 
 class TestLinuxBridgeBasicGet(test_plugin.TestBasicGet,
@@ -45,6 +46,11 @@ class TestLinuxBridgePortsV2(test_plugin.TestPortsV2,
     VIF_TYPE = portbindings.VIF_TYPE_BRIDGE
     HAS_PORT_FILTER = True
 
+    def test_update_port_status_build(self):
+        with self.port() as port:
+            self.assertEqual(port['port']['status'], 'DOWN')
+            self.assertEqual(self.port_create_status, 'DOWN')
+
 
 class TestLinuxBridgeNetworksV2(test_plugin.TestNetworksV2,
                                 LinuxBridgePluginV2TestCase):
index 5f78c802c24d2ecb9073cf9aa6dcd704c4c70627..fbbf77ca03328baab1a76a106ff9eb955eda5ffa 100644 (file)
@@ -103,6 +103,8 @@ class QuantumDbPluginV2TestCase(unittest2.TestCase):
         cfg.CONF.set_override('max_dns_nameservers', 2)
         cfg.CONF.set_override('max_subnet_host_routes', 2)
         self.api = APIRouter()
+        # Set the defualt port status
+        self.port_create_status = 'ACTIVE'
 
         def _is_native_bulk_supported():
             plugin_obj = QuantumManager.get_plugin()
@@ -616,7 +618,7 @@ class TestV2HTTPResponse(QuantumDbPluginV2TestCase):
 
 class TestPortsV2(QuantumDbPluginV2TestCase):
     def test_create_port_json(self):
-        keys = [('admin_state_up', True), ('status', 'ACTIVE')]
+        keys = [('admin_state_up', True), ('status', self.port_create_status)]
         with self.port(name='myname') as port:
             for k, v in keys:
                 self.assertEqual(port['port'][k], v)
@@ -640,7 +642,7 @@ class TestPortsV2(QuantumDbPluginV2TestCase):
             self.assertEqual(res.status_int, 403)
 
     def test_create_port_public_network(self):
-        keys = [('admin_state_up', True), ('status', 'ACTIVE')]
+        keys = [('admin_state_up', True), ('status', self.port_create_status)]
         with self.network(shared=True) as network:
             port_res = self._create_port('json',
                                          network['network']['id'],
@@ -656,7 +658,8 @@ class TestPortsV2(QuantumDbPluginV2TestCase):
     def test_create_port_public_network_with_ip(self):
         with self.network(shared=True) as network:
             with self.subnet(network=network, cidr='10.0.0.0/24') as subnet:
-                keys = [('admin_state_up', True), ('status', 'ACTIVE'),
+                keys = [('admin_state_up', True),
+                        ('status', self.port_create_status),
                         ('fixed_ips', [{'subnet_id': subnet['subnet']['id'],
                                         'ip_address': '10.0.0.2'}])]
                 port_res = self._create_port('json',