From 64168bfe59893a2e8daa8643dd4a575bbc2c07b7 Mon Sep 17 00:00:00 2001 From: Adit Sarfaty Date: Mon, 11 Dec 2017 14:46:54 +0200 Subject: [PATCH] Add router advertisement rules support Change-Id: I53bf97a304c07cd9b1b8c82192225810d3ef1966 --- vmware_nsxlib/tests/unit/v3/test_resources.py | 29 +++++++++++++++++++ vmware_nsxlib/v3/core_resources.py | 10 +++++++ 2 files changed, 39 insertions(+) diff --git a/vmware_nsxlib/tests/unit/v3/test_resources.py b/vmware_nsxlib/tests/unit/v3/test_resources.py index 5252ca1a..3d105be0 100644 --- a/vmware_nsxlib/tests/unit/v3/test_resources.py +++ b/vmware_nsxlib/tests/unit/v3/test_resources.py @@ -694,6 +694,35 @@ class LogicalRouterTestCase(BaseTestResource): data=jsonutils.dumps(data, sort_keys=True), headers=self.default_headers()) + def test_update_advertisement_rules(self): + router = self.get_mocked_resource() + router_id = test_constants.FAKE_ROUTER_UUID + rules = [{"action": "ALLOW", + "networks": ["44.0.0.0/20"], + "display_name": "rule1"}, + {"action": "ALLOW", + "networks": ["6.60.0.0/20"], + "display_name": "rule2"}] + with mock.patch.object(router.client, 'get', + return_value={}): + router.update_advertisement_rules(router_id, rules) + test_client.assert_json_call( + 'put', router, + ('https://1.2.3.4/api/v1/logical-routers/%s/routing/' + 'advertisement/rules' % router_id), + data=jsonutils.dumps({'rules': rules}, sort_keys=True), + headers=self.default_headers()) + + def test_get_advertisement_rules(self): + router = self.get_mocked_resource() + router_id = test_constants.FAKE_ROUTER_UUID + router.get_advertisement_rules(router_id) + test_client.assert_json_call( + 'get', router, + ('https://1.2.3.4/api/v1/logical-routers/%s/routing/' + 'advertisement/rules' % router_id), + headers=self.default_headers()) + class LogicalRouterPortTestCase(BaseTestResource): diff --git a/vmware_nsxlib/v3/core_resources.py b/vmware_nsxlib/v3/core_resources.py index d19c5013..9905d7f6 100644 --- a/vmware_nsxlib/v3/core_resources.py +++ b/vmware_nsxlib/v3/core_resources.py @@ -634,6 +634,16 @@ class NsxLibLogicalRouter(utils.NsxLibApiBase): return self._update_resource_with_retry(resource, kwargs) + def update_advertisement_rules(self, logical_router_id, rules): + resource = ('logical-routers/%s/routing/advertisement/rules' % + logical_router_id) + return self._update_resource_with_retry(resource, {'rules': rules}) + + def get_advertisement_rules(self, logical_router_id): + resource = ('logical-routers/%s/routing/advertisement/rules' % + logical_router_id) + return self.client.get(resource) + def create(self, display_name, tags, edge_cluster_uuid=None, tier_0=False, description=None): # TODO(salv-orlando): If possible do not manage edge clusters