Merge "Add support to force overwrite on updating adv rule"
This commit is contained in:
commit
801adfe85c
@ -1192,6 +1192,29 @@ class LogicalRouterTestCase(BaseTestResource):
|
||||
data=jsonutils.dumps({'rules': rules}, sort_keys=True),
|
||||
headers=self.default_headers())
|
||||
|
||||
def test_update_advertisement_rules_force(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"}]
|
||||
|
||||
headers = self.default_headers()
|
||||
expected_headers = headers.copy()
|
||||
expected_headers['X-Allow-Overwrite'] = 'true'
|
||||
with mock.patch.object(router.client, 'get',
|
||||
return_value={}):
|
||||
router.update_advertisement_rules(router_id, rules, force=True)
|
||||
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=expected_headers)
|
||||
|
||||
def test_update_advertisement_rules_with_replace(self):
|
||||
router = self.get_mocked_resource()
|
||||
router_id = test_constants.FAKE_ROUTER_UUID
|
||||
|
@ -710,7 +710,7 @@ class NsxLibLogicalRouter(utils.NsxLibApiBase):
|
||||
return self._update_resource(resource, kwargs, retry=True)
|
||||
|
||||
def update_advertisement_rules(self, logical_router_id, rules,
|
||||
name_prefix=None):
|
||||
name_prefix=None, force=False):
|
||||
"""Update the router advertisement rules
|
||||
|
||||
If name_prefix is None, replace the entire list of NSX rules with the
|
||||
@ -736,8 +736,13 @@ class NsxLibLogicalRouter(utils.NsxLibApiBase):
|
||||
|
||||
if name_prefix:
|
||||
callback = update_payload_cbk
|
||||
return self._update_resource(resource, {'rules': rules}, retry=True,
|
||||
update_payload_cbk=callback)
|
||||
|
||||
# In case of updating advertisement rule on the logical router
|
||||
# owned by other Principal Entities, need to force the overwrite
|
||||
headers = {'X-Allow-Overwrite': 'true'} if force else None
|
||||
return self._update_resource(
|
||||
resource, {'rules': rules}, retry=True,
|
||||
update_payload_cbk=callback, headers=headers)
|
||||
|
||||
def get_advertisement_rules(self, logical_router_id):
|
||||
resource = ('logical-routers/%s/routing/advertisement/rules' %
|
||||
|
Loading…
x
Reference in New Issue
Block a user