def test_migrate_identity(self): self.patchFlows() self.context.store = { "user-role-%s-%s-%s-ensure" % (self.user1_info["id"], self.roles[3].id, self.tenant_id): True, "user-role-%s-%s-%s-ensure" % (self.user2_info["id"], self.roles[3].id, self.tenant_id): True, } (users_ids, flow) = identity.migrate_identity(self.context, self.tenant_id) self.mock_flow.assert_called_once_with("identity-%s" % self.tenant_id) # Tenant migration task created self.assertEqual( self.mock_tenant.call_args_list, [call(self.context, self.tenant_id), ] ) # Tasks for all unique users created self.assertEqual( self.mock_user.call_args_list, [ call(self.context, self.user1_info["id"], tenant_id=self.tenant_id), call(self.context, self.user2_info["id"], tenant_id=self.tenant_id), ] ) # For both unique users only roles [0] and [2] should be migrated as # [1] starts with "_" and # [4] exists for both of them in store self.assertEqual( self.mock_member.call_args_list, [ call(self.context, u["id"], r.id, self.tenant_id) for u in [self.user1_info, self.user2_info] for r in [self.roles[0], self.roles[2]] ] ) self.assertItemsEqual( self.mock_role.call_args_list, [ call(self.context, r.id) for r in [self.roles[0], self.roles[2], self.roles[3]] ] )
def migrate_project(context, project_id): flow = graph_flow.Flow("migrate-project-{}".format(project_id)) _, identity_flow = identity_tasks.migrate_identity(context, project_id) flow.add(identity_flow) migrate_project_servers(context, flow, project_id) migrate_project_keypairs(context, flow, project_id) migrate_project_images(context, flow, project_id) migrate_project_volumes(context, flow, project_id) migrate_project_quota(context, flow, project_id) migrate_project_networks = network_manager.select_from_config( context.config) migrate_project_networks(context, flow, project_id) flow.add(capacity.check_project_capacity(context, project_id)) return flow
def test_migrate_identity_return(self): self.src_cloud.keystone.users.list_roles.return_value = [self.roles[0]] (users_ids, flow) = identity.migrate_identity(self.context, self.tenant_id) self.assertEqual(self.context.store, { "role-role1_id-retrieve": "role1_id", "tenant-dummy_tenant_id-retrieve": "dummy_tenant_id", "user-role-user1_id-role1_id-dummy_tenant_id-ensure": "user-role-user1_id-role1_id-dummy_tenant_id-ensure", "user-role-user2_id-role1_id-dummy_tenant_id-ensure": "user-role-user2_id-role1_id-dummy_tenant_id-ensure", "user-user1_id-retrieve": "user1_id", "user-user2_id-retrieve": "user2_id" }) self.assertEqual(flow, self.mock_flow.return_value) self.assertItemsEqual(users_ids, [self.users_ids[0], self.users_ids[1]])
def migrate_identity(ctx, flow, ids): for tenant_id in ids: _, identity_flow = identity_tasks.migrate_identity( ctx, tenant_id) flow.add(identity_flow) return flow