From 5c6b83675b97f892e87f7864f8f89e324ae1e5f2 Mon Sep 17 00:00:00 2001 From: Kevin Benton Date: Fri, 2 Sep 2016 17:14:37 -0700 Subject: [PATCH] Change 'revision' to 'revision_number' The DB model uses 'revision_number' so we should keep the API consistent with that to avoid the hassle of writing translation logic as we transition to OVO. This is an API change, but the revision plugin didn't exist in the last cycle so we don't need to worry about backward compatibility or an API impact. Change-Id: I445974b0e0dabb762807c6f318b1b44f51b3fe15 --- neutron/extensions/revisions.py | 2 +- neutron/services/revisions/revision_plugin.py | 2 +- neutron/tests/tempest/api/test_revisions.py | 62 +++++++++++-------- .../revisions/test_revision_plugin.py | 25 ++++---- 4 files changed, 51 insertions(+), 40 deletions(-) diff --git a/neutron/extensions/revisions.py b/neutron/extensions/revisions.py index 6ad9bfef2f1..8e0554cce26 100644 --- a/neutron/extensions/revisions.py +++ b/neutron/extensions/revisions.py @@ -14,7 +14,7 @@ from neutron.api import extensions -REVISION = 'revision' +REVISION = 'revision_number' REVISION_BODY = { REVISION: {'allow_post': False, 'allow_put': False, 'is_visible': True, 'default': None}, diff --git a/neutron/services/revisions/revision_plugin.py b/neutron/services/revisions/revision_plugin.py index 2016c26e92b..425f79db8c3 100644 --- a/neutron/services/revisions/revision_plugin.py +++ b/neutron/services/revisions/revision_plugin.py @@ -77,7 +77,7 @@ class RevisionPlugin(service_base.ServicePluginBase): return "Adds revision numbers to resources." def extend_resource_dict_revision(self, plugin, resource_res, resource_db): - resource_res['revision'] = resource_db.revision_number + resource_res['revision_number'] = resource_db.revision_number def _find_related_obj(self, session, obj, relationship_col): """Find a related object for an object based on relationship column. diff --git a/neutron/tests/tempest/api/test_revisions.py b/neutron/tests/tempest/api/test_revisions.py index 4284649fff2..b45990f5e30 100644 --- a/neutron/tests/tempest/api/test_revisions.py +++ b/neutron/tests/tempest/api/test_revisions.py @@ -27,54 +27,59 @@ class TestRevisions(base.BaseAdminNetworkTest, bsg.BaseSecGroupTest): @test.idempotent_id('4a26a4be-9c53-483c-bc50-b53f1db10ac6') def test_update_network_bumps_revision(self): net = self.create_network() - self.assertIn('revision', net) + self.assertIn('revision_number', net) updated = self.client.update_network(net['id'], name='newnet') - self.assertGreater(updated['network']['revision'], net['revision']) + self.assertGreater(updated['network']['revision_number'], + net['revision_number']) @test.idempotent_id('cac7ecde-12d5-4331-9a03-420899dea077') def test_update_port_bumps_revision(self): net = self.create_network() port = self.create_port(net) - self.assertIn('revision', port) + self.assertIn('revision_number', port) updated = self.client.update_port(port['id'], name='newport') - self.assertGreater(updated['port']['revision'], port['revision']) + self.assertGreater(updated['port']['revision_number'], + port['revision_number']) @test.idempotent_id('c1c4fa41-8e89-44d0-9bfc-409f3b66dc57') def test_update_subnet_bumps_revision(self): net = self.create_network() subnet = self.create_subnet(net) - self.assertIn('revision', subnet) + self.assertIn('revision_number', subnet) updated = self.client.update_subnet(subnet['id'], name='newsub') - self.assertGreater(updated['subnet']['revision'], subnet['revision']) + self.assertGreater(updated['subnet']['revision_number'], + subnet['revision_number']) @test.idempotent_id('e8c5d7db-2b8d-4615-a476-6e537437c4f2') def test_update_subnetpool_bumps_revision(self): sp = self.create_subnetpool('subnetpool', default_prefixlen=24, prefixes=['10.0.0.0/8']) - self.assertIn('revision', sp) + self.assertIn('revision_number', sp) updated = self.admin_client.update_subnetpool(sp['id'], name='sp2') - self.assertGreater(updated['subnetpool']['revision'], sp['revision']) + self.assertGreater(updated['subnetpool']['revision_number'], + sp['revision_number']) @test.idempotent_id('e8c5d7db-2b8d-4567-a326-6e123437c4d1') def test_update_subnet_bumps_network_revision(self): net = self.create_network() subnet = self.create_subnet(net) updated = self.client.show_network(net['id']) - self.assertGreater(updated['network']['revision'], net['revision']) + self.assertGreater(updated['network']['revision_number'], + net['revision_number']) self.client.delete_subnet(subnet['id']) updated2 = self.client.show_network(net['id']) - self.assertGreater(updated2['network']['revision'], - updated['network']['revision']) + self.assertGreater(updated2['network']['revision_number'], + updated['network']['revision_number']) @test.idempotent_id('6c256f71-c929-4200-b3dc-4e1843506be5') @test.requires_ext(extension="security-group", service="network") def test_update_sg_group_bumps_revision(self): sg, name = self._create_security_group() - self.assertIn('revision', sg['security_group']) + self.assertIn('revision_number', sg['security_group']) update_body = self.client.update_security_group( sg['security_group']['id'], name='new_sg_name') - self.assertGreater(update_body['security_group']['revision'], - sg['security_group']['revision']) + self.assertGreater(update_body['security_group']['revision_number'], + sg['security_group']['revision_number']) @test.idempotent_id('6489632f-8550-4453-a674-c98849742967') @test.requires_ext(extension="security-group", service="network") @@ -91,9 +96,10 @@ class TestRevisions(base.BaseAdminNetworkTest, bsg.BaseSecGroupTest): # commit happens if the port is unbound. The update response should # be usable directly once that is fixed. updated2 = self.client.show_port(port['id']) - self.assertGreater(updated['port']['revision'], port['revision']) - self.assertGreater(updated2['port']['revision'], - updated['port']['revision']) + self.assertGreater(updated['port']['revision_number'], + port['revision_number']) + self.assertGreater(updated2['port']['revision_number'], + updated['port']['revision_number']) @test.idempotent_id('29c7ab2b-d1d8-425d-8cec-fcf632960f22') @test.requires_ext(extension="security-group", service="network") @@ -104,27 +110,28 @@ class TestRevisions(base.BaseAdminNetworkTest, bsg.BaseSecGroupTest): protocol='tcp', direction='ingress', ethertype=self.ethertype, port_range_min=60, port_range_max=70) updated = self.client.show_security_group(sg['security_group']['id']) - self.assertGreater(updated['security_group']['revision'], - sg['security_group']['revision']) + self.assertGreater(updated['security_group']['revision_number'], + sg['security_group']['revision_number']) self.client.delete_security_group_rule( rule['security_group_rule']['id']) updated2 = self.client.show_security_group(sg['security_group']['id']) - self.assertGreater(updated2['security_group']['revision'], - updated['security_group']['revision']) + self.assertGreater(updated2['security_group']['revision_number'], + updated['security_group']['revision_number']) @test.idempotent_id('4a37bde9-1975-47e0-9b8c-2c9ca36415b0') @test.requires_ext(extension="router", service="network") def test_update_router_bumps_revision(self): subnet = self.create_subnet(self.create_network()) router = self.create_router(router_name='test') - self.assertIn('revision', router) - rev1 = router['revision'] + self.assertIn('revision_number', router) + rev1 = router['revision_number'] router = self.client.update_router(router['id'], name='test2')['router'] - self.assertGreater(router['revision'], rev1) + self.assertGreater(router['revision_number'], rev1) self.create_router_interface(router['id'], subnet['id']) updated = self.client.show_router(router['id'])['router'] - self.assertGreater(updated['revision'], router['revision']) + self.assertGreater(updated['revision_number'], + router['revision_number']) @test.idempotent_id('9de71ebc-f5df-4cd0-80bc-60299fce3ce9') @test.requires_ext(extension="router", service="network") @@ -142,6 +149,7 @@ class TestRevisions(base.BaseAdminNetworkTest, bsg.BaseSecGroupTest): port_id=port['id'], description='d1' )['floatingip'] - self.assertIn('revision', body) + self.assertIn('revision_number', body) b2 = self.client.update_floatingip(body['id'], description='d2') - self.assertGreater(b2['floatingip']['revision'], body['revision']) + self.assertGreater(b2['floatingip']['revision_number'], + body['revision_number']) diff --git a/neutron/tests/unit/services/revisions/test_revision_plugin.py b/neutron/tests/unit/services/revisions/test_revision_plugin.py index 4a323f35d56..5cc0556d035 100644 --- a/neutron/tests/unit/services/revisions/test_revision_plugin.py +++ b/neutron/tests/unit/services/revisions/test_revision_plugin.py @@ -51,15 +51,15 @@ class TestRevisionPlugin(test_plugin.Ml2PluginV2TestCase): def test_port_name_update_revises(self): with self.port() as port: - rev = port['port']['revision'] + rev = port['port']['revision_number'] new = {'port': {'name': 'seaweed'}} response = self._update('ports', port['port']['id'], new) - new_rev = response['port']['revision'] + new_rev = response['port']['revision_number'] self.assertGreater(new_rev, rev) def test_port_ip_update_revises(self): with self.port() as port: - rev = port['port']['revision'] + rev = port['port']['revision_number'] new = {'port': {'fixed_ips': port['port']['fixed_ips']}} # ensure adding an IP allocation updates the port next_ip = str(netaddr.IPAddress( @@ -67,14 +67,14 @@ class TestRevisionPlugin(test_plugin.Ml2PluginV2TestCase): new['port']['fixed_ips'].append({'ip_address': next_ip}) response = self._update('ports', port['port']['id'], new) self.assertEqual(2, len(response['port']['fixed_ips'])) - new_rev = response['port']['revision'] + new_rev = response['port']['revision_number'] self.assertGreater(new_rev, rev) # ensure deleting an IP allocation updates the port rev = new_rev new['port']['fixed_ips'].pop() response = self._update('ports', port['port']['id'], new) self.assertEqual(1, len(response['port']['fixed_ips'])) - new_rev = response['port']['revision'] + new_rev = response['port']['revision_number'] self.assertGreater(new_rev, rev) def test_security_group_rule_ops_bump_security_group(self): @@ -83,7 +83,7 @@ class TestRevisionPlugin(test_plugin.Ml2PluginV2TestCase): sg = self.cp.create_security_group(self.ctx, s) s['security_group']['name'] = 'hello' updated = self.cp.update_security_group(self.ctx, sg['id'], s) - self.assertGreater(updated['revision'], sg['revision']) + self.assertGreater(updated['revision_number'], sg['revision_number']) # ensure rule changes bump parent SG r = {'security_group_rule': {'tenant_id': 'some_tenant', 'port_range_min': 80, 'protocol': 6, @@ -96,11 +96,11 @@ class TestRevisionPlugin(test_plugin.Ml2PluginV2TestCase): rule = self.cp.create_security_group_rule(self.ctx, r) sg = updated updated = self.cp.get_security_group(self.ctx, sg['id']) - self.assertGreater(updated['revision'], sg['revision']) + self.assertGreater(updated['revision_number'], sg['revision_number']) self.cp.delete_security_group_rule(self.ctx, rule['id']) sg = updated updated = self.cp.get_security_group(self.ctx, sg['id']) - self.assertGreater(updated['revision'], sg['revision']) + self.assertGreater(updated['revision_number'], sg['revision_number']) def test_router_interface_ops_bump_router(self): r = {'router': {'name': 'myrouter', 'tenant_id': 'some_tenant', @@ -108,16 +108,19 @@ class TestRevisionPlugin(test_plugin.Ml2PluginV2TestCase): router = self.l3p.create_router(self.ctx, r) r['router']['name'] = 'yourrouter' updated = self.l3p.update_router(self.ctx, router['id'], r) - self.assertGreater(updated['revision'], router['revision']) + self.assertGreater(updated['revision_number'], + router['revision_number']) # add an intf and make sure it bumps rev with self.subnet(tenant_id='some_tenant') as s: interface_info = {'subnet_id': s['subnet']['id']} self.l3p.add_router_interface(self.ctx, router['id'], interface_info) router = updated updated = self.l3p.get_router(self.ctx, router['id']) - self.assertGreater(updated['revision'], router['revision']) + self.assertGreater(updated['revision_number'], + router['revision_number']) self.l3p.remove_router_interface(self.ctx, router['id'], interface_info) router = updated updated = self.l3p.get_router(self.ctx, router['id']) - self.assertGreater(updated['revision'], router['revision']) + self.assertGreater(updated['revision_number'], + router['revision_number'])