Merge "Fix GBP heat stack update handling"

This commit is contained in:
Jenkins 2015-04-03 17:36:49 +00:00 committed by Gerrit Code Review
commit 2461883e49
2 changed files with 117 additions and 3 deletions

View File

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

View File

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