Merge "V2T migration: create SG rules after all groups" into stable/train

This commit is contained in:
Zuul 2021-03-07 11:36:37 +00:00 committed by Gerrit Code Review
commit 72534fc7be
1 changed files with 16 additions and 10 deletions

View File

@ -376,6 +376,7 @@ class ApiReplayClient(utils.PrepareObjectForMigration):
total_num = len(source_sec_groups) total_num = len(source_sec_groups)
LOG.info("Migrating %s security groups", total_num) LOG.info("Migrating %s security groups", total_num)
rules_dict = {}
for count, sg in enumerate(source_sec_groups, 1): for count, sg in enumerate(source_sec_groups, 1):
dest_sec_group = self.have_id(sg['id'], dest_sec_groups) dest_sec_group = self.have_id(sg['id'], dest_sec_groups)
# If the security group already exists on the dest_neutron # If the security group already exists on the dest_neutron
@ -434,16 +435,21 @@ class ApiReplayClient(utils.PrepareObjectForMigration):
body = self.prepare_security_group_rule(sg_rule) body = self.prepare_security_group_rule(sg_rule)
rules.append({'security_group_rule': body}) rules.append({'security_group_rule': body})
if not rules: # save rules to create once all the sgs are created
continue if rules:
try: rules_dict[sg['id']] = rules
rules = self.dest_neutron.create_security_group_rule(
{'security_group_rules': rules}) # Create the rules after all security groups are created to allow
LOG.debug("created %s security group rules for SG %s", # dependencies in remote_group_id
len(rules), sg['id']) for sg_id in rules_dict:
except Exception as e: try:
self.add_error("Failed to create security group %s " rules = self.dest_neutron.create_security_group_rule(
"rules: %s" % (sg['id'], e)) {'security_group_rules': rules_dict[sg_id]})
LOG.debug("created %s security group rules for SG %s",
len(rules), sg_id)
except Exception as e:
self.add_error("Failed to create security group %s "
"rules: %s" % (sg_id, e))
def get_dest_availablity_zones(self, resource): def get_dest_availablity_zones(self, resource):
azs = self.dest_neutron.list_availability_zones()['availability_zones'] azs = self.dest_neutron.list_availability_zones()['availability_zones']