[API Replay] Migrate L7 policies once all listeners are migrated

This change ensures the loop for migrating l7 policies is executed
after the loop that creates listeners and pools.

Change-Id: Ie3ff03e403db52b2f79ff86fb7e3e0cfbdb3507f
This commit is contained in:
Salvatore Orlando 2021-08-31 07:41:23 -07:00
parent 83d59be2c8
commit 744f74f0cd

View File

@ -1101,11 +1101,13 @@ class ApiReplayClient(utils.PrepareObjectForMigration):
lb_body_for_deletion = copy.deepcopy(lb_body) lb_body_for_deletion = copy.deepcopy(lb_body)
lb_body_for_deletion['listeners'] = [] lb_body_for_deletion['listeners'] = []
lb_body_for_deletion['pools'] = [] lb_body_for_deletion['pools'] = []
LOG.debug("Migrating load balancer: %s", lb_id)
listeners_map = {} listeners_map = {}
for listener_dict in lb.get('listeners', []): for listener_dict in lb.get('listeners', []):
start_listener = datetime.now() start_listener = datetime.now()
listener_id = listener_dict['id'] listener_id = listener_dict['id']
LOG.debug("Migrating listener: %s", listener_id)
listener = orig_map['listeners'][listener_id] listener = orig_map['listeners'][listener_id]
cert = self._create_lb_certificate(listener) cert = self._create_lb_certificate(listener)
body = self.prepare_lb_listener(listener, lb_body) body = self.prepare_lb_listener(listener, lb_body)
@ -1125,6 +1127,7 @@ class ApiReplayClient(utils.PrepareObjectForMigration):
for pool_dict in lb.get('pools', []): for pool_dict in lb.get('pools', []):
start_pool = datetime.now() start_pool = datetime.now()
pool_id = pool_dict['id'] pool_id = pool_dict['id']
LOG.debug("Migrating pool: %s", pool_id)
pool = orig_map['pools'][pool_id] pool = orig_map['pools'][pool_id]
pool_body = self.prepare_lb_pool(pool, lb_body) pool_body = self.prepare_lb_pool(pool, lb_body)
# Update listeners in pool # Update listeners in pool
@ -1175,32 +1178,33 @@ class ApiReplayClient(utils.PrepareObjectForMigration):
lb_body_for_deletion['pools'][-1]['healthmonitor'] = body lb_body_for_deletion['pools'][-1]['healthmonitor'] = body
self._log_elapsed(start_pool, "Migrate LB Pool %s" % pool_id) self._log_elapsed(start_pool, "Migrate LB Pool %s" % pool_id)
# Add listeners L7 policies # Add listeners L7 policies
for listener_id in listeners_map.keys(): for listener_id in listeners_map.keys():
listener = orig_map['listeners'][listener_id] listener = orig_map['listeners'][listener_id]
for l7pol_dict in listener.get('l7policies', []): for l7pol_dict in listener.get('l7policies', []):
start_l7pol = datetime.now() start_l7pol = datetime.now()
l7_pol_id = l7pol_dict['id'] l7_pol_id = l7pol_dict['id']
l7pol = orig_map['l7pols'][l7_pol_id] LOG.debug("Migrating L7 policy %s for listener %s",
pol_body = self.prepare_lb_l7policy(l7pol) l7_pol_id, listener_id)
l7pol = orig_map['l7pols'][l7_pol_id]
pol_body = self.prepare_lb_l7policy(l7pol)
# Add the rules of this policy # Add the rules of this policy
source_l7rules = self.octavia.l7rule_list( source_l7rules = self.octavia.l7rule_list(
l7_pol_id)['rules'] l7_pol_id)['rules']
for rule in source_l7rules: for rule in source_l7rules:
rule_body = self.prepare_lb_l7rule(rule) rule_body = self.prepare_lb_l7rule(rule)
pol_body['rules'].append(rule_body) pol_body['rules'].append(rule_body)
kw = {'l7policy': pol_body} kw = {'l7policy': pol_body}
if not self.octavia_rpc_client.call( if not self.octavia_rpc_client.call(
{}, 'l7policy_create', **kw): {}, 'l7policy_create', **kw):
self.add_error("Failed to create l7policy " self.add_error("Failed to create l7policy "
"(%(l7pol)s)" % "(%(l7pol)s)" % {'l7pol': l7pol})
{'l7pol': l7pol}) self._delete_octavia_lb(lb_body_for_deletion)
self._delete_octavia_lb(lb_body_for_deletion) return
return self._log_elapsed(
self._log_elapsed( start_l7pol, "Migrate L7 LB policy %s" % l7_pol_id)
start_l7pol, "Migrate L7 LB policy %s" % l7_pol_id)
self._log_elapsed(start_lb, "Migrate Load Balancer %s" % lb_id) self._log_elapsed(start_lb, "Migrate Load Balancer %s" % lb_id)
LOG.info("Created loadbalancer %s/%s: %s", count, total_num, lb_id) LOG.info("Created loadbalancer %s/%s: %s", count, total_num, lb_id)