[API Replay] Migrate RBAC policies
Migrate RBAC policies, skipping those which have been implicitly created from shared or external networks. Change-Id: I0833a52993248857b1eb25491928ca86a720c04c
This commit is contained in:
parent
2158636ebc
commit
5706012434
@ -183,6 +183,7 @@ class ApiReplayClient(utils.PrepareObjectForMigration):
|
|||||||
self.migrate_fwaas()
|
self.migrate_fwaas()
|
||||||
if self.octavia:
|
if self.octavia:
|
||||||
self.migrate_octavia(source_networks)
|
self.migrate_octavia(source_networks)
|
||||||
|
self.migrate_rbac()
|
||||||
|
|
||||||
if self.n_errors:
|
if self.n_errors:
|
||||||
LOG.error("NSX migration is Done with %s errors:", self.n_errors)
|
LOG.error("NSX migration is Done with %s errors:", self.n_errors)
|
||||||
@ -311,6 +312,40 @@ class ApiReplayClient(utils.PrepareObjectForMigration):
|
|||||||
{'q': quota, 'e': e})
|
{'q': quota, 'e': e})
|
||||||
self._log_elapsed(outer_start, "Quota migration", debug=False)
|
self._log_elapsed(outer_start, "Quota migration", debug=False)
|
||||||
|
|
||||||
|
def migrate_rbac(self):
|
||||||
|
outer_start = datetime.now()
|
||||||
|
source_data = self.source_neutron.list_rbac_policies()
|
||||||
|
source_rbac = source_data['rbac_policies']
|
||||||
|
for count, rbac_policy in enumerate(source_rbac, 1):
|
||||||
|
inner_start = datetime.now()
|
||||||
|
# Careful: for shared and external networks an auto generated RBAC
|
||||||
|
# policy might have been already added. Adding again the same rule
|
||||||
|
# will trigger an error
|
||||||
|
try:
|
||||||
|
new_rbac_policy = rbac_policy.copy()
|
||||||
|
new_rbac_policy.pop('id')
|
||||||
|
self.dest_neutron.create_rbac_policy(
|
||||||
|
{'rbac_policy': new_rbac_policy})
|
||||||
|
LOG.info("Migrated RBAC policy %s for %s %s",
|
||||||
|
rbac_policy['action'],
|
||||||
|
rbac_policy['object_type'],
|
||||||
|
rbac_policy['object_id'])
|
||||||
|
self._log_elapsed(
|
||||||
|
inner_start,
|
||||||
|
"Migrate RBAC policy %s" % rbac_policy['id'])
|
||||||
|
except n_exc.Conflict as e:
|
||||||
|
LOG.info("Skipping RBAC policy %s due to %s",
|
||||||
|
rbac_policy['id'], e)
|
||||||
|
except Exception as e:
|
||||||
|
self.add_error(
|
||||||
|
"Failed to migrate RBAC policy %s for %s %si: %s" % (
|
||||||
|
rbac_policy['action'],
|
||||||
|
rbac_policy['object_type'],
|
||||||
|
rbac_policy['object_id'],
|
||||||
|
e))
|
||||||
|
|
||||||
|
self._log_elapsed(outer_start, "Quota migration", debug=False)
|
||||||
|
|
||||||
def migrate_qos_rule(self, dest_policy, source_rule):
|
def migrate_qos_rule(self, dest_policy, source_rule):
|
||||||
"""Add the QoS rule from the source to the QoS policy
|
"""Add the QoS rule from the source to the QoS policy
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user