Ejemplo n.º 1
0
    def test__remove_associated_networks_failure(self,
                                                 mock_check_service_status):
        def fake_get_network(req_network):
            for network in networks:
                if network.project_id == req_network.project_id:
                    return network

        networks = [
            mock.MagicMock(project_id="t1"),
            mock.MagicMock(project_id="t4")
        ]
        nova_admin = mock.MagicMock()
        clients = mock.MagicMock()
        self.osclients.Clients.return_value = clients
        clients.services.return_value = {"compute": "nova"}
        clients.nova.return_value = nova_admin
        nova_admin.networks.list.return_value = networks
        nova_admin.networks.get = fake_get_network
        nova_admin.networks.disassociate.side_effect = Exception()
        user_generator = users.UserGenerator(self.context)
        user_generator.context["tenants"] = {
            "t1": dict(id="t1", name="t1"),
            "t2": dict(id="t2", name="t2")
        }
        user_generator._remove_associated_networks()
        mock_check_service_status.assert_called_once_with(
            mock.ANY, "nova-network")
        nova_admin.networks.disassociate.assert_called_once_with(networks[0])
Ejemplo n.º 2
0
    def test_setup_and_cleanup(self):
        with users.UserGenerator(self.context) as ctx:
            self.assertEqual(self.wrapped_keystone.create_user.call_count, 0)
            self.assertEqual(self.wrapped_keystone.create_project.call_count,
                             0)

            ctx.setup()

            self.assertEqual(len(ctx.context["users"]), self.users_num)
            self.assertEqual(self.wrapped_keystone.create_user.call_count,
                             self.users_num)
            self.assertEqual(len(ctx.context["tenants"]), self.tenants_num)
            self.assertEqual(self.wrapped_keystone.create_project.call_count,
                             self.tenants_num)

            # Assert nothing is deleted yet
            self.assertEqual(self.wrapped_keystone.delete_user.call_count, 0)
            self.assertEqual(self.wrapped_keystone.delete_project.call_count,
                             0)

        # Cleanup (called by content manager)
        self.assertEqual(self.wrapped_keystone.delete_user.call_count,
                         self.users_num)
        self.assertEqual(self.wrapped_keystone.delete_project.call_count,
                         self.tenants_num)
Ejemplo n.º 3
0
 def test__create_tenants(self, mock_keystone, mock_sleep):
     user_generator = users.UserGenerator(self.context)
     user_generator.config["tenants"] = 1
     tenants = user_generator._create_tenants()
     self.assertEqual(1, len(tenants))
     id, tenant = tenants.popitem()
     self.assertIn("name", tenant)
Ejemplo n.º 4
0
    def test_users_contains_correct_endpoint_type(self, mock_keystone):
        endpoint = objects.Endpoint("foo_url",
                                    "foo",
                                    "foo_pass",
                                    endpoint_type=consts.EndpointType.INTERNAL)
        config = {
            "config": {
                "users": {
                    "tenants": 1,
                    "users_per_tenant": 2,
                    "resource_management_workers": 1
                }
            },
            "admin": {
                "endpoint": endpoint
            },
            "task": {
                "uuid": "task_id"
            }
        }

        user_generator = users.UserGenerator(config)
        users_ = user_generator._create_users()

        for user in users_:
            self.assertEqual("internal", user["endpoint"].endpoint_type)
Ejemplo n.º 5
0
 def test__delete_users(self, mock_keystone):
     user_generator = users.UserGenerator(self.context)
     user1 = mock.MagicMock()
     user2 = mock.MagicMock()
     user_generator.context["users"] = [user1, user2]
     user_generator._delete_users()
     self.assertEqual(len(user_generator.context["users"]), 0)
Ejemplo n.º 6
0
    def test_setup_and_cleanup_failure(self, mock_keystone):
        wrapped_keystone = mock_keystone.wrap.return_value
        wrapped_keystone.create_user.side_effect = Exception()
        with users.UserGenerator(self.context) as ctx:
            self.assertRaises(exceptions.ContextSetupFailure, ctx.setup)

        # Ensure that tenants get deleted anyway
        self.assertEqual(len(ctx.context["tenants"]), 0)
Ejemplo n.º 7
0
 def test__delete_tenants(self, mock_keystone):
     user_generator = users.UserGenerator(self.context)
     user_generator.context["tenants"] = {
         "t1": dict(id="t1", name="t1"),
         "t2": dict(id="t2", name="t2")
     }
     user_generator._delete_tenants()
     self.assertEqual(len(user_generator.context["tenants"]), 0)
Ejemplo n.º 8
0
    def _get_user_ctx_for_validation(self, context):
        if self.existing_users:
            context["config"] = {"existing_users": self.existing_users}
            user_context = existing_users_ctx.ExistingUsers(context)
        else:
            user_context = users_ctx.UserGenerator(context)

        return user_context
Ejemplo n.º 9
0
 def test__delete_users_failure(self, mock_keystone):
     wrapped_keystone = mock_keystone.wrap.return_value
     wrapped_keystone.delete_user.side_effect = Exception()
     user_generator = users.UserGenerator(self.context)
     user1 = mock.MagicMock()
     user2 = mock.MagicMock()
     user_generator.context["users"] = [user1, user2]
     user_generator._delete_users()
     self.assertEqual(len(user_generator.context["users"]), 0)
Ejemplo n.º 10
0
 def test__delete_tenants_failure(self, mock_keystone):
     wrapped_keystone = mock_keystone.wrap.return_value
     wrapped_keystone.delete_project.side_effect = Exception()
     user_generator = users.UserGenerator(self.context)
     user_generator.context["tenants"] = {
         "t1": dict(id="t1", name="t1"),
         "t2": dict(id="t2", name="t2")
     }
     user_generator._delete_tenants()
     self.assertEqual(len(user_generator.context["tenants"]), 0)
Ejemplo n.º 11
0
 def test__create_users(self, mock_keystone, mock_sleep):
     user_generator = users.UserGenerator(self.context)
     user_generator.context["tenants"] = {
         "t1": dict(id="t1", name="t1"),
         "t2": dict(id="t2", name="t2")
     }
     user_generator.config["users_per_tenant"] = 2
     users_ = user_generator._create_users()
     self.assertEqual(4, len(users_))
     for user in users_:
         self.assertIn("id", user)
         self.assertIn("endpoint", user)
Ejemplo n.º 12
0
    def test_setup_and_cleanup(self, mock_keystone):
        wrapped_keystone = mock.MagicMock()
        mock_keystone.wrap.return_value = wrapped_keystone
        with users.UserGenerator(self.context) as ctx:

            ctx.setup()

            self.assertEqual(len(ctx.context["users"]), self.users_num)
            self.assertEqual(len(ctx.context["tenants"]), self.tenants_num)

        # Cleanup (called by content manager)
        self.assertEqual(len(ctx.context["users"]), 0)
        self.assertEqual(len(ctx.context["tenants"]), 0)
Ejemplo n.º 13
0
    def test_users_and_tenants_in_context(self, mock_osclients):
        fc = fakes.FakeClients()
        mock_osclients.Clients.return_value = fc

        task = {"uuid": "abcdef"}

        config = {
            "config": {
                "users": {
                    "tenants": 2,
                    "users_per_tenant": 2,
                    "concurrent": 1
                }
            },
            "admin": {
                "endpoint": mock.MagicMock()
            },
            "task": task
        }

        with users.UserGenerator(config) as ctx:
            ctx.setup()

            tenants = []
            for i, t in enumerate(fc.keystone().tenants.list()):
                pattern = users.UserGenerator.PATTERN_TENANT
                tenants.append({
                    "id": t.id,
                    "name": pattern % {
                        "task_id": task["uuid"],
                        "iter": i
                    }
                })

            self.assertEqual(ctx.context["tenants"], tenants)

            for user in ctx.context["users"]:
                self.assertEqual(set(["id", "endpoint", "tenant_id"]),
                                 set(user.keys()))

            tenants_ids = []
            for t in tenants:
                tenants_ids.extend([t["id"], t["id"]])

            users_ids = [user.id for user in fc.keystone().users.list()]

            for (user, tenant_id, user_id) in zip(ctx.context["users"],
                                                  tenants_ids, users_ids):
                self.assertEqual(user["id"], user_id)
                self.assertEqual(user["tenant_id"], tenant_id)
Ejemplo n.º 14
0
    def test_users_and_tenants_in_context(self):
        task = {"uuid": "abcdef"}

        config = {
            "config": {
                "users": {
                    "tenants": 2,
                    "users_per_tenant": 2,
                    "concurrent": 1
                }
            },
            "admin": {
                "endpoint": mock.MagicMock()
            },
            "task": task
        }

        user_list = [
            mock.MagicMock(id='id_%d' % i) for i in range(self.users_num)
        ]
        self.wrapped_keystone.create_user.side_effect = user_list

        with users.UserGenerator(config) as ctx:
            ctx.setup()

            create_tenant_calls = []
            for i, t in enumerate(ctx.context["tenants"]):
                pattern = users.UserGenerator.PATTERN_TENANT
                create_tenant_calls.append(
                    mock.call(pattern % {
                        "task_id": task["uuid"],
                        "iter": i
                    }, ctx.config["project_domain"]))

            self.wrapped_keystone.create_project.assert_has_calls(
                create_tenant_calls, any_order=True)

            for user in ctx.context["users"]:
                self.assertEqual(set(["id", "endpoint", "tenant_id"]),
                                 set(user.keys()))

            tenants_ids = []
            for t in ctx.context["tenants"]:
                tenants_ids.extend([t["id"], t["id"]])

            for (user, tenant_id, orig_user) in zip(ctx.context["users"],
                                                    tenants_ids, user_list):
                self.assertEqual(user["id"], orig_user.id)
                self.assertEqual(user["tenant_id"], tenant_id)
Ejemplo n.º 15
0
    def test_users_and_tenants_in_context(self, mock_keystone):
        wrapped_keystone = mock.MagicMock()
        mock_keystone.wrap.return_value = wrapped_keystone
        task = {"uuid": "abcdef"}

        config = {
            "config": {
                "users": {
                    "tenants": 1,
                    "users_per_tenant": 2,
                    "resource_management_workers": 1
                }
            },
            "admin": {
                "endpoint": mock.MagicMock()
            },
            "task": task
        }

        user_list = [
            mock.MagicMock(id="id_%d" % i) for i in range(self.users_num)
        ]
        wrapped_keystone.create_user.side_effect = user_list

        with users.UserGenerator(config) as ctx:
            ctx.setup()

            create_tenant_calls = []
            for i, t in enumerate(ctx.context["tenants"]):
                pattern = users.UserGenerator.PATTERN_TENANT
                create_tenant_calls.append(
                    mock.call(pattern % {
                        "task_id": task["uuid"],
                        "iter": i
                    }, ctx.config["project_domain"]))

            for user in ctx.context["users"]:
                self.assertEqual(set(["id", "endpoint", "tenant_id"]),
                                 set(user.keys()))

            tenants_ids = []
            for t in ctx.context["tenants"].keys():
                tenants_ids.append(t)

            for (user, tenant_id, orig_user) in zip(ctx.context["users"],
                                                    tenants_ids, user_list):
                self.assertEqual(user["id"], orig_user.id)
                self.assertEqual(user["tenant_id"], tenant_id)
Ejemplo n.º 16
0
    def _validate_config_semantic(self, config):
        self._check_cloud()

        # NOTE(boris-42): In future we will have more complex context, because
        #                 we will have pre-created users mode as well.
        context = {"task": self.task, "admin": {"endpoint": self.admin}}
        deployment = objects.Deployment.get(self.task["deployment_uuid"])

        with users_ctx.UserGenerator(context) as ctx:
            ctx.setup()
            admin = osclients.Clients(self.admin)
            user = osclients.Clients(context["users"][0]["endpoint"])

            for name, values in six.iteritems(config):
                for pos, kwargs in enumerate(values):
                    self._validate_config_semantic_helper(
                        admin, user, name, pos, deployment, kwargs)
Ejemplo n.º 17
0
    def _validate_config_semantic(self, config):
        # NOTE(boris-42): In future we will have more complex context, because
        #                 we will have pre-created users mode as well.
        context = {
            "task": self.task,
            "admin": {
                "endpoint": self.admin_endpoint
            }
        }
        with users_ctx.UserGenerator(context) as ctx:
            ctx.setup()
            admin = osclients.Clients(self.admin_endpoint)
            user = osclients.Clients(context["users"][0]["endpoint"])

            for name, values in config.iteritems():
                for pos, kwargs in enumerate(values):
                    self._validate_config_semantic_helper(
                        admin, user, name, pos, self.task, kwargs)
Ejemplo n.º 18
0
    def test_setup_and_cleanup(self, mock_osclients):
        fc = fakes.FakeClients()
        mock_osclients.Clients.return_value = fc

        with users.UserGenerator(self.context) as ctx:
            self.assertEqual(len(fc.keystone().users.list()), 0)
            self.assertEqual(len(fc.keystone().tenants.list()), 0)

            ctx.setup()

            self.assertEqual(len(ctx.context["users"]), self.users_num)
            self.assertEqual(len(fc.keystone().users.list()), self.users_num)
            self.assertEqual(len(ctx.context["tenants"]), self.tenants_num)
            self.assertEqual(len(fc.keystone().tenants.list()),
                             self.tenants_num)

        # Cleanup (called by content manager)
        self.assertEqual(len(fc.keystone().users.list()), 0)
        self.assertEqual(len(fc.keystone().tenants.list()), 0)