diff --git a/networking_bgpvpn_tempest/services/bgpvpn/bgpvpn_client.py b/networking_bgpvpn_tempest/services/bgpvpn/bgpvpn_client.py index fb8f0ab4..c23e8185 100644 --- a/networking_bgpvpn_tempest/services/bgpvpn/bgpvpn_client.py +++ b/networking_bgpvpn_tempest/services/bgpvpn/bgpvpn_client.py @@ -20,6 +20,7 @@ from tempest.lib.services.network import base BGPVPN_OBJECT_PATH = '/bgpvpn/bgpvpns' BGPVPN_RESOURCE_PATH = '/bgpvpn/bgpvpns/%s' +BGPVPN_NETWORK_ASSOCIATION_PATH = '/bgpvpn/bgpvpns/%s/network_associations' class BgpvpnClient(base.BaseNetworkClient): @@ -45,3 +46,14 @@ class BgpvpnClient(base.BaseNetworkClient): uri = BGPVPN_RESOURCE_PATH % bgpvpn_id post_data = {'bgpvpn': kwargs} return self.update_resource(uri, post_data) + + def associate_network_to_bgpvpn(self, bgpvpn_id, network_id): + uri = BGPVPN_NETWORK_ASSOCIATION_PATH % bgpvpn_id + post_data = {"network_association": + {"network_id": network_id}} + return self.create_resource(uri, post_data) + + def disassociate_network_from_bgpvpn(self, bgpvpn_id, network_id): + uri_pattern = BGPVPN_NETWORK_ASSOCIATION_PATH + "/%s" + uri = uri_pattern % (bgpvpn_id, network_id) + return self.delete_resource(uri) diff --git a/networking_bgpvpn_tempest/tests/api/test_bgpvpn.py b/networking_bgpvpn_tempest/tests/api/test_bgpvpn.py index 73ddf7fa..f8ca53b0 100644 --- a/networking_bgpvpn_tempest/tests/api/test_bgpvpn.py +++ b/networking_bgpvpn_tempest/tests/api/test_bgpvpn.py @@ -23,6 +23,8 @@ class BgpvpnTest(base): create bgpvpn delete bgpvpn + associate network to bgpvpn + disassociate network from bgpvpn v2.0 of the Neutron API is assumed. It is also assumed that the following options are defined in the [network] section of etc/tempest.conf: @@ -44,3 +46,26 @@ class BgpvpnTest(base): tenant_id=self.bgpvpn_client.tenant_id) self.assertRaises(exceptions.NotFound, self.bgpvpn_client.delete_bgpvpn, bgpvpn['id']) + + def test_associate_disassociate_network(self): + bgpvpn = self.create_bgpvpn(self.bgpvpn_admin_client, + tenant_id=self.bgpvpn_client.tenant_id) + network = self.networks_client.create_network() + network_id = network['network']['id'] + + # Associate the network to the bgpvpn resource + association = self.bgpvpn_client.associate_network_to_bgpvpn( + bgpvpn['id'], network_id) + self.assertEqual(association['network_association']['network_id'], + network_id) + updated_bgpvpn = self.bgpvpn_client.show_bgpvpn(bgpvpn['id']) + self.assertEqual(updated_bgpvpn['bgpvpn']['networks'], [network_id]) + + # Disassociate the network from the bgpvpn resource + self.bgpvpn_client.disassociate_network_from_bgpvpn( + bgpvpn['id'], + association['network_association']['id']) + updated_bgpvpn = self.bgpvpn_client.show_bgpvpn(bgpvpn['id']) + self.assertEqual(updated_bgpvpn['bgpvpn']['networks'], []) + + self.networks_client.delete_network(network_id)

AltStyle によって変換されたページ (->オリジナル) /