Fix GBP heat stack update handling
Change-Id: If8b3d03715b58372dcc478eee3af2cdde9664256 Closes-bug: #1421000
This commit is contained in:
parent
e4451d9479
commit
a02fb68229
|
@ -221,6 +221,36 @@ class PolicyTargetGroup(gbpresource.GBPResource):
|
|||
|
||||
def handle_update(self, json_snippet, tmpl_diff, prop_diff):
|
||||
if prop_diff:
|
||||
provided_policy_rule_set_list = {}
|
||||
consumed_policy_rule_set_list = {}
|
||||
props_provided_policy_rule_sets = prop_diff.get(
|
||||
'provided_policy_rule_sets', [])
|
||||
props_consumed_policy_rule_sets = prop_diff.get(
|
||||
'consumed_policy_rule_sets', [])
|
||||
|
||||
for prop_prov_policy_rule_set in props_provided_policy_rule_sets:
|
||||
policy_rule_set_id = (
|
||||
prop_prov_policy_rule_set['policy_rule_set_id'])
|
||||
policy_rule_set_scope = (
|
||||
prop_prov_policy_rule_set['policy_rule_set_scope'])
|
||||
provided_policy_rule_set_list.update({policy_rule_set_id:
|
||||
policy_rule_set_scope})
|
||||
|
||||
for prop_cons_policy_rule_set in props_consumed_policy_rule_sets:
|
||||
policy_rule_set_id = (
|
||||
prop_cons_policy_rule_set['policy_rule_set_id'])
|
||||
policy_rule_set_scope = (
|
||||
prop_cons_policy_rule_set['policy_rule_set_scope'])
|
||||
consumed_policy_rule_set_list.update({policy_rule_set_id:
|
||||
policy_rule_set_scope})
|
||||
|
||||
if provided_policy_rule_set_list:
|
||||
prop_diff['provided_policy_rule_sets'] = (
|
||||
provided_policy_rule_set_list)
|
||||
if consumed_policy_rule_set_list:
|
||||
prop_diff['consumed_policy_rule_sets'] = (
|
||||
consumed_policy_rule_set_list)
|
||||
|
||||
self.grouppolicy().update_policy_target_group(
|
||||
self.resource_id, {'policy_target_group': prop_diff})
|
||||
|
||||
|
@ -900,6 +930,36 @@ class ExternalPolicy(gbpresource.GBPResource):
|
|||
|
||||
def handle_update(self, json_snippet, tmpl_diff, prop_diff):
|
||||
if prop_diff:
|
||||
provided_policy_rule_set_list = {}
|
||||
consumed_policy_rule_set_list = {}
|
||||
props_provided_policy_rule_sets = prop_diff.get(
|
||||
'provided_policy_rule_sets', [])
|
||||
props_consumed_policy_rule_sets = prop_diff.get(
|
||||
'consumed_policy_rule_sets', [])
|
||||
|
||||
for prop_prov_policy_rule_set in props_provided_policy_rule_sets:
|
||||
policy_rule_set_id = (
|
||||
prop_prov_policy_rule_set['policy_rule_set_id'])
|
||||
policy_rule_set_scope = (
|
||||
prop_prov_policy_rule_set['policy_rule_set_scope'])
|
||||
provided_policy_rule_set_list.update({policy_rule_set_id:
|
||||
policy_rule_set_scope})
|
||||
|
||||
for prop_cons_policy_rule_set in props_consumed_policy_rule_sets:
|
||||
policy_rule_set_id = (
|
||||
prop_cons_policy_rule_set['policy_rule_set_id'])
|
||||
policy_rule_set_scope = (
|
||||
prop_cons_policy_rule_set['policy_rule_set_scope'])
|
||||
consumed_policy_rule_set_list.update({policy_rule_set_id:
|
||||
policy_rule_set_scope})
|
||||
|
||||
if provided_policy_rule_set_list:
|
||||
prop_diff['provided_policy_rule_sets'] = (
|
||||
provided_policy_rule_set_list)
|
||||
if consumed_policy_rule_set_list:
|
||||
prop_diff['consumed_policy_rule_sets'] = (
|
||||
consumed_policy_rule_set_list)
|
||||
|
||||
self.grouppolicy().update_external_policy(
|
||||
self.resource_id, {'external_policy': prop_diff})
|
||||
|
||||
|
|
|
@ -547,12 +547,40 @@ class PolicyTargetGroupTest(HeatTestCase):
|
|||
def test_update(self):
|
||||
rsrc = self.create_policy_target_group()
|
||||
gbpclient.Client.update_policy_target_group(
|
||||
'5678', {'policy_target_group': {'l2_policy_id': 'l2_id_update'}})
|
||||
'5678', {'policy_target_group': {
|
||||
'l2_policy_id': 'l2_id_update',
|
||||
'provided_policy_rule_sets': {
|
||||
'policy_rule_set1': 'scope1',
|
||||
'policy_rule_set2': 'scope2',
|
||||
'policy_rule_set5': 'scope5'
|
||||
},
|
||||
'consumed_policy_rule_sets': {
|
||||
'policy_rule_set3': 'scope3',
|
||||
'policy_rule_set4': 'scope4',
|
||||
'policy_rule_set6': 'scope6'
|
||||
},
|
||||
}})
|
||||
self.m.ReplayAll()
|
||||
scheduler.TaskRunner(rsrc.create)()
|
||||
|
||||
update_template = copy.deepcopy(rsrc.t)
|
||||
update_template['Properties']['l2_policy_id'] = 'l2_id_update'
|
||||
update_template['Properties']['provided_policy_rule_sets'] = [
|
||||
{'policy_rule_set_id': 'policy_rule_set1',
|
||||
'policy_rule_set_scope': 'scope1'},
|
||||
{'policy_rule_set_id': 'policy_rule_set2',
|
||||
'policy_rule_set_scope': 'scope2'},
|
||||
{'policy_rule_set_id': 'policy_rule_set5',
|
||||
'policy_rule_set_scope': 'scope5'}
|
||||
]
|
||||
update_template['Properties']['consumed_policy_rule_sets'] = [
|
||||
{'policy_rule_set_id': 'policy_rule_set3',
|
||||
'policy_rule_set_scope': 'scope3'},
|
||||
{'policy_rule_set_id': 'policy_rule_set4',
|
||||
'policy_rule_set_scope': 'scope4'},
|
||||
{'policy_rule_set_id': 'policy_rule_set6',
|
||||
'policy_rule_set_scope': 'scope6'}
|
||||
]
|
||||
scheduler.TaskRunner(rsrc.update, update_template)()
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
@ -1483,14 +1511,40 @@ class ExternalPolicyTest(HeatTestCase):
|
|||
def test_update(self):
|
||||
rsrc = self.create_external_policy()
|
||||
gbpclient.Client.update_external_policy(
|
||||
'5678', {'external_policy':
|
||||
{'external_segments': ['9876']}})
|
||||
'5678', {'external_policy': {
|
||||
'external_segments': ['9876'],
|
||||
'provided_policy_rule_sets': {
|
||||
'2345': 'scope1',
|
||||
'8901': 'scope2',
|
||||
'1122': 'scope5'},
|
||||
'consumed_policy_rule_sets': {
|
||||
'9012': 'scope3',
|
||||
'9210': 'scope4',
|
||||
'9900': 'scope6'
|
||||
}
|
||||
}})
|
||||
self.m.ReplayAll()
|
||||
scheduler.TaskRunner(rsrc.create)()
|
||||
|
||||
update_template = copy.deepcopy(rsrc.t)
|
||||
update_template['Properties']['external_segments'] = [
|
||||
'9876']
|
||||
update_template['Properties']['provided_policy_rule_sets'] = [
|
||||
{'policy_rule_set_id': '2345',
|
||||
'policy_rule_set_scope': 'scope1'},
|
||||
{'policy_rule_set_id': '8901',
|
||||
'policy_rule_set_scope': 'scope2'},
|
||||
{'policy_rule_set_id': '1122',
|
||||
'policy_rule_set_scope': 'scope5'}
|
||||
]
|
||||
update_template['Properties']['consumed_policy_rule_sets'] = [
|
||||
{'policy_rule_set_id': '9012',
|
||||
'policy_rule_set_scope': 'scope3'},
|
||||
{'policy_rule_set_id': '9210',
|
||||
'policy_rule_set_scope': 'scope4'},
|
||||
{'policy_rule_set_id': '9900',
|
||||
'policy_rule_set_scope': 'scope6'}
|
||||
]
|
||||
scheduler.TaskRunner(rsrc.update, update_template)()
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
|
Loading…
Reference in New Issue