Add router advertisement rules support

Change-Id: I53bf97a304c07cd9b1b8c82192225810d3ef1966
This commit is contained in:
Adit Sarfaty 2017-12-11 14:46:54 +02:00
parent bc57bc7037
commit 64168bfe59
2 changed files with 39 additions and 0 deletions

View File

@ -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):

View File

@ -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