def create_one_image(self, user, **kwargs): """Create one image for the user.""" clients = osclients.Clients(user["endpoint"]) image_id = types.ImageResourceType.transform( clients=clients, resource_config=self.config["image"]) flavor_id = types.FlavorResourceType.transform( clients=clients, resource_config=self.config["flavor"]) vm_scenario = vmtasks.VMTasks(self.context, clients=clients) server, fip = vm_scenario._boot_server_with_fip( image=image_id, flavor=flavor_id, floating_network=self.config.get("floating_network"), userdata=self.config.get("userdata"), key_name=user["keypair"]["name"], security_groups=[user["secgroup"]["name"]], **kwargs) try: LOG.debug("Installing benchmark on %r %s", server, fip["ip"]) self.customize_image(server, fip, user) LOG.debug("Stopping server %r", server) vm_scenario._stop_server(server) LOG.debug("Creating snapshot for %r", server) custom_image = vm_scenario._create_image(server).to_dict() finally: vm_scenario._delete_server_with_fip(server, fip) return custom_image
def test_boot_runcommand_delete_custom_image(self): context = { "user": { "tenant_id": "tenant_id", "credential": mock.Mock() }, "tenant": { "custom_image": { "id": "image_id" } } } scenario = vmtasks.VMTasks(context) scenario.boot_runcommand_delete = mock.Mock() scenario.boot_runcommand_delete_custom_image(flavor="flavor_id", command={ "script_file": "foo_script", "interpreter": "bar_interpreter" }, username="******") scenario.boot_runcommand_delete.assert_called_once_with( image="image_id", flavor="flavor_id", username="******", command={ "script_file": "foo_script", "interpreter": "bar_interpreter" })
def setUp(self): super(VMTasksTestCase, self).setUp() self.scenario = vmtasks.VMTasks( context={"user": {"keypair": {"name": "keypair_name"}, "endpoint": mock.MagicMock()}} ) self.ip = {"id": "foo_id", "ip": "foo_ip", "is_floating": True} self.scenario._boot_server_with_fip = mock.Mock( return_value=("foo_server", self.ip)) self.scenario._delete_server_with_fip = mock.Mock() self.scenario._create_volume = mock.Mock( return_value=mock.Mock(id="foo_volume")) self.scenario._run_command = mock.MagicMock( return_value=(0, "\"foo_out\"", "foo_err"))
def create_one_image(self, user, **kwargs): """Create one image for the user.""" clients = osclients.Clients(user["credential"]) admin_clients = osclients.Clients(self.context["admin"]["credential"]) image_id = types.GlanceImage.transform( clients=clients, resource_config=self.config["image"]) flavor_id = types.Flavor.transform( clients=clients, resource_config=self.config["flavor"]) vm_scenario = vmtasks.VMTasks(self.context, clients=clients) glance_wrap = glance_wrapper.wrap(admin_clients.glance, self) server, fip = vm_scenario._boot_server_with_fip( image=image_id, flavor=flavor_id, floating_network=self.config.get("floating_network"), userdata=self.config.get("userdata"), key_name=user["keypair"]["name"], security_groups=[user["secgroup"]["name"]], **kwargs) try: LOG.debug("Installing benchmark on %r %s", server, fip["ip"]) self.customize_image(server, fip, user) LOG.debug("Stopping server %r", server) vm_scenario._stop_server(server) LOG.debug("Creating snapshot for %r", server) custom_image = vm_scenario._create_image(server) glance_wrap.set_visibility(custom_image) finally: vm_scenario._delete_server_with_fip(server, fip) if hasattr(custom_image, "to_dict"): # NOTE(stpierre): Glance v1 images are objects that can be # converted to dicts; Glance v2 images are already # dict-like custom_image = custom_image.to_dict() return custom_image
def test_runcommand_heat(self, mock_sshutils, mock_heat): fake_ssh = mock.Mock() fake_ssh.execute.return_value = [0, "key:val", ""] mock_sshutils.SSH.return_value = fake_ssh fake_stack = mock.Mock() fake_stack.stack.outputs = [{ "output_key": "gate_node", "output_value": "ok" }] mock_heat.main.Stack.return_value = fake_stack context = { "user": { "keypair": { "name": "name", "private": "pk" }, "credential": "ok" }, "tenant": { "networks": [{ "router_id": "1" }] } } scenario = vmtasks.VMTasks(context) scenario.generate_random_name = mock.Mock(return_value="name") scenario.add_output = mock.Mock() workload = {"username": "******", "resource": ["foo", "bar"]} scenario.runcommand_heat(workload, "template", {"file_key": "file_value"}, {"param_key": "param_value"}) expected = { "chart_plugin": "Table", "data": { "rows": [["key", "val"]], "cols": ["key", "value"] }, "description": "Data generated by workload", "title": "Workload summary" } scenario.add_output.assert_called_once_with(complete=expected)