Esempio n. 1
0
    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]]
            ]
        )
Esempio n. 2
0
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
Esempio n. 3
0
    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]])
Esempio n. 4
0
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