예제 #1
0
    def setup(self):
        image_url = self.config["image_url"]
        image_type = self.config["image_type"]
        image_container = self.config["image_container"]
        images_per_tenant = self.config["images_per_tenant"]
        image_name = self.config.get("image_name")

        for user, tenant_id in rutils.iterate_per_tenants(
                self.context["users"]):
            current_images = []
            glance_scenario = glance_utils.GlanceScenario({
                "user":
                user,
                "task":
                self.context["task"]
            })
            for i in range(images_per_tenant):
                if image_name and i > 0:
                    cur_name = image_name + str(i)
                elif image_name:
                    cur_name = image_name
                else:
                    cur_name = None

                image = glance_scenario._create_image(
                    image_container,
                    image_url,
                    image_type,
                    name=cur_name,
                    min_ram=self.config.get("min_ram", 0),
                    min_disk=self.config.get("min_disk", 0))
                current_images.append(image.id)

            self.context["tenants"][tenant_id]["images"] = current_images
예제 #2
0
파일: images.py 프로젝트: yongfengdu/rally
    def setup(self):
        image_url = self.config["image_url"]
        image_type = self.config["image_type"]
        image_container = self.config["image_container"]
        images_per_tenant = self.config["images_per_tenant"]
        image_name = self.config.get("image_name")

        for user, tenant_id in rutils.iterate_per_tenants(
                self.context["users"]):
            current_images = []
            clients = osclients.Clients(user["endpoint"])
            glance_scenario = glance_utils.GlanceScenario(clients=clients)
            for i in range(images_per_tenant):
                if image_name and i > 0:
                    cur_name = image_name + str(i)
                elif image_name:
                    cur_name = image_name
                else:
                    cur_name = None

                image = glance_scenario._create_image(
                    image_container,
                    image_url,
                    image_type,
                    name=cur_name,
                    prefix="rally_ctx_image_",
                    min_ram=self.config.get("min_ram", 0),
                    min_disk=self.config.get("min_disk", 0))
                current_images.append(image.id)

            self.context["tenants"][tenant_id]["images"] = current_images
예제 #3
0
 def test_delete_image(self, mock_wrap):
     scenario = utils.GlanceScenario(context=self.context,
                                     clients=self.scenario_clients)
     scenario._delete_image(self.image)
     mock_wrap.assert_called_once_with(scenario._clients.glance, scenario)
     mock_wrap.return_value.delete_image.assert_called_once_with(self.image)
     self._test_atomic_action_timer(scenario.atomic_actions(),
                                    "glance.delete_image")
예제 #4
0
 def test_list_images(self):
     scenario = utils.GlanceScenario(context=self.context)
     return_images_list = scenario._list_images()
     self.clients("glance").images.list.assert_called_once_with()
     self.assertEqual(list(self.clients("glance").images.list.return_value),
                      return_images_list)
     self._test_atomic_action_timer(scenario.atomic_actions(),
                                    "glance.list_images")
예제 #5
0
 def test_delete_image(self):
     scenario = utils.GlanceScenario()
     scenario._delete_image(self.image)
     self.image.delete.assert_called_once_with()
     self.wait_for_delete.mock.assert_called_once_with(
         self.image,
         update_resource=self.gfm(),
         check_interval=1,
         timeout=120)
     self._test_atomic_action_timer(scenario.atomic_actions(),
                                    "glance.delete_image")
예제 #6
0
 def test_delete_image(self):
     scenario = utils.GlanceScenario(context=self.context)
     scenario._delete_image(self.image)
     self.image.delete.assert_called_once_with()
     self.mock_wait_for_delete.mock.assert_called_once_with(
         self.image,
         update_resource=self.mock_get_from_manager.mock.return_value,
         check_interval=CONF.benchmark.glance_image_delete_poll_interval,
         timeout=CONF.benchmark.glance_image_delete_timeout)
     self.mock_get_from_manager.mock.assert_called_once_with()
     self._test_atomic_action_timer(scenario.atomic_actions(),
                                    "glance.delete_image")
예제 #7
0
 def _create_image(self, hadoop_version, image_url, plugin_name, user,
                   user_name):
     scenario = glance_utils.GlanceScenario({"user": user})
     image_name = rutils.generate_random_name(prefix="rally_sahara_image_")
     image = scenario._create_image(name=image_name,
                                    container_format="bare",
                                    image_location=image_url,
                                    disk_format="qcow2")
     scenario.clients("sahara").images.update_image(
         image_id=image.id, user_name=user_name, desc="")
     scenario.clients("sahara").images.update_tags(
         image_id=image.id, new_tags=[plugin_name, hadoop_version])
     return image.id
예제 #8
0
    def test_delete_image(self, mock_wrap):
        deleted_image = mock.Mock(status="DELETED")
        wrapper = mock_wrap.return_value
        wrapper.get_image.side_effect = [self.image, deleted_image]

        scenario = utils.GlanceScenario(context=self.context,
                                        clients=self.scenario_clients)
        scenario._delete_image(self.image)
        self.clients("glance").images.delete.assert_called_once_with(
            self.image.id)

        mock_wrap.assert_called_once_with(scenario._clients.glance, scenario)
        self._test_atomic_action_timer(scenario.atomic_actions(),
                                       "glance.delete_image")
예제 #9
0
 def test_create_image_with_location(self):
     self.clients("glance").images.create.return_value = self.image
     scenario = utils.GlanceScenario()
     return_image = scenario._create_image("container_format",
                                           "image_location",
                                           "disk_format")
     self.wait_for.mock.assert_called_once_with(self.image,
                                                update_resource=self.gfm(),
                                                is_ready=self.res_is.mock(),
                                                check_interval=1,
                                                timeout=120)
     self.res_is.mock.assert_has_calls([mock.call("active")])
     self.assertEqual(self.wait_for.mock(), return_image)
     self._test_atomic_action_timer(scenario.atomic_actions(),
                                    "glance.create_image")
예제 #10
0
 def test_create_image_with_location(self):
     self.clients("glance").images.create.return_value = self.image
     scenario = utils.GlanceScenario(context=self.context)
     return_image = scenario._create_image("container_format",
                                           "image_location", "disk_format")
     self.mock_wait_for.mock.assert_called_once_with(
         self.image,
         update_resource=self.mock_get_from_manager.mock.return_value,
         ready_statuses=["active"],
         check_interval=CONF.benchmark.glance_image_create_poll_interval,
         timeout=CONF.benchmark.glance_image_create_timeout)
     self.mock_get_from_manager.mock.assert_called_once_with()
     self.assertEqual(self.mock_wait_for.mock.return_value, return_image)
     self._test_atomic_action_timer(scenario.atomic_actions(),
                                    "glance.create_image")
예제 #11
0
 def setUp(self):
     super(GlanceScenarioTestCase, self).setUp()
     self.image = mock.Mock()
     self.image1 = mock.Mock()
     self.res_is = mockpatch.Patch(BM_UTILS + ".resource_is")
     self.get_fm = mockpatch.Patch(BM_UTILS + ".get_from_manager")
     self.wait_for = mockpatch.Patch(GLANCE_UTILS + ".bench_utils.wait_for")
     self.wait_for_delete = mockpatch.Patch(
         GLANCE_UTILS + ".bench_utils.wait_for_delete")
     self.useFixture(self.wait_for)
     self.useFixture(self.wait_for_delete)
     self.useFixture(self.res_is)
     self.useFixture(self.get_fm)
     self.gfm = self.get_fm.mock
     self.useFixture(mockpatch.Patch("time.sleep"))
     self.scenario = utils.GlanceScenario()
예제 #12
0
 def test_create_image(self, mock_wrap):
     image_location = tempfile.NamedTemporaryFile()
     mock_wrap.return_value.create_image.return_value = self.image
     scenario = utils.GlanceScenario(context=self.context,
                                     clients=self.scenario_clients)
     return_image = scenario._create_image("container_format",
                                           image_location.name,
                                           "disk_format",
                                           fakearg="fakearg")
     self.assertEqual(self.image, return_image)
     mock_wrap.assert_called_once_with(scenario._clients.glance, scenario)
     mock_wrap.return_value.create_image.assert_called_once_with(
         "container_format", image_location.name, "disk_format",
         fakearg="fakearg")
     self._test_atomic_action_timer(scenario.atomic_actions(),
                                    "glance.create_image")
예제 #13
0
파일: images.py 프로젝트: hmdesai89/rally
    def setup(self):
        image_url = self.config["image_url"]
        image_type = self.config["image_type"]
        image_container = self.config["image_container"]
        images_per_tenant = self.config["images_per_tenant"]
        image_name = self.config.get("image_name")

        for user, tenant_id in rutils.iterate_per_tenants(
                self.context["users"]):
            current_images = []
            glance_scenario = glance_utils.GlanceScenario({
                "user":
                user,
                "task":
                self.context["task"],
                "config":
                self.context["config"]
            })

            kwargs = self.config.get("image_args", {})
            if self.config.get("min_ram") is not None:
                LOG.warning("The 'min_ram' argument is deprecated; specify "
                            "arbitrary arguments with 'image_args' instead")
                kwargs["min_ram"] = self.config["min_ram"]
            if self.config.get("min_disk") is not None:
                LOG.warning("The 'min_disk' argument is deprecated; specify "
                            "arbitrary arguments with 'image_args' instead")
                kwargs["min_disk"] = self.config["min_disk"]

            for i in range(images_per_tenant):
                if image_name and i > 0:
                    cur_name = image_name + str(i)
                elif image_name:
                    cur_name = image_name
                else:
                    cur_name = None

                image = glance_scenario._create_image(image_container,
                                                      image_url,
                                                      image_type,
                                                      name=cur_name,
                                                      **kwargs)
                current_images.append(image.id)

            self.context["tenants"][tenant_id]["images"] = current_images
예제 #14
0
 def test_create_image(self):
     image_location = tempfile.NamedTemporaryFile()
     self.clients("glance").images.create.return_value = self.image
     scenario = utils.GlanceScenario(context=self.context)
     return_image = scenario._create_image("container_format",
                                           image_location.name,
                                           "disk_format")
     self.mock_wait_for.mock.assert_called_once_with(
         self.image,
         update_resource=self.mock_get_from_manager.mock.return_value,
         is_ready=self.mock_resource_is.mock.return_value,
         check_interval=CONF.benchmark.glance_image_create_poll_interval,
         timeout=CONF.benchmark.glance_image_create_timeout)
     self.mock_resource_is.mock.assert_called_once_with("active")
     self.mock_get_from_manager.mock.assert_called_once_with()
     self.assertEqual(self.mock_wait_for.mock.return_value, return_image)
     self._test_atomic_action_timer(scenario.atomic_actions(),
                                    "glance.create_image")
예제 #15
0
    def test_create_image(self, create_args, mock_wrap):
        image_location = tempfile.NamedTemporaryFile()
        mock_wrap.return_value.create_image.return_value = self.image
        scenario = utils.GlanceScenario(context=self.context,
                                        clients=self.scenario_clients)
        scenario.generate_random_name = mock.Mock()

        return_image = scenario._create_image("container_format",
                                              image_location.name,
                                              "disk_format", **create_args)

        expected_args = dict(create_args)
        if not expected_args.get("name"):
            expected_args["name"] = scenario.generate_random_name.return_value

        self.assertEqual(self.image, return_image)
        mock_wrap.assert_called_once_with(scenario._clients.glance, scenario)
        mock_wrap.return_value.create_image.assert_called_once_with(
            "container_format", image_location.name, "disk_format",
            **expected_args)
        self._test_atomic_action_timer(scenario.atomic_actions(),
                                       "glance.create_image")