コード例 #1
0
    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(
            name=vm_scenario._generate_random_name("rally_ctx_custom_image_"),
            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)

        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()

        vm_scenario._delete_server_with_fip(server, fip)

        return custom_image
コード例 #2
0
    def test_boot_runcommand_delete(self, mock_json_loads):
        # Setup mocks
        scenario = vmtasks.VMTasks()
        fake_server = fakes.FakeServer()
        fake_server.addresses = dict(private=[dict(version=4, addr="1.2.3.4")])

        scenario._boot_server = mock.MagicMock(return_value=fake_server)

        scenario._generate_random_name = mock.MagicMock(return_value="name")

        fake_floating_ip = fakes.FakeFloatingIP()
        fake_floating_ip.ip = "4.3.2.1"
        scenario._create_floating_ip = mock.MagicMock(
            return_value=fake_floating_ip)
        scenario._associate_floating_ip = mock.MagicMock()
        scenario._release_server_floating_ip = mock.MagicMock()

        fake_floating_ip_pool = fakes.FakeFloatingIPPool()
        fake_floating_ip_pool.name = "public"
        scenario._list_floating_ip_pools = mock.MagicMock(
            return_value=[fake_floating_ip_pool])

        scenario.run_command = mock.MagicMock()
        scenario.run_command.return_value = (0, 'stdout', 'stderr')
        scenario._delete_server = mock.MagicMock()

        # Run scenario
        scenario.boot_runcommand_delete("image_id",
                                        "flavour_id",
                                        "script_path",
                                        "interpreter",
                                        fixed_network='private',
                                        floating_network='public',
                                        username="******",
                                        ip_version=4,
                                        port=22,
                                        use_floatingip=True,
                                        fakearg="f")

        # Assertions
        scenario._boot_server.assert_called_once_with('name',
                                                      'image_id',
                                                      "flavour_id",
                                                      key_name="rally_ssh_key",
                                                      fakearg="f")

        scenario._create_floating_ip.assert_called_once_with(
            fake_floating_ip_pool.name)
        scenario._associate_floating_ip.assert_called_once_with(
            fake_server, fake_floating_ip)
        scenario.run_command.assert_called_once_with(fake_floating_ip.ip, 22,
                                                     'username', "interpreter",
                                                     "script_path")

        mock_json_loads.assert_called_once_with('stdout')

        scenario._release_server_floating_ip.assert_called_once_with(
            fake_server, fake_floating_ip)
        scenario._delete_server.assert_called_once_with(fake_server)
コード例 #3
0
ファイル: test_vmtasks.py プロジェクト: sahanasj/rally
    def test__release_server_floating_ip(self):
        scenario = vmtasks.VMTasks()
        fake_server = fakes.FakeServer()
        fake_floating_ip = fakes.FakeFloatingIP()

        scenario._dissociate_floating_ip = mock.MagicMock()
        scenario._delete_floating_ip = mock.MagicMock()
        scenario.check_ip_address = mock.MagicMock(
            return_value=mock.MagicMock(return_value=True))

        scenario._release_server_floating_ip(fake_server, fake_floating_ip)

        scenario._dissociate_floating_ip.assert_called_once_with(
            fake_server, fake_floating_ip)
        scenario._delete_floating_ip.assert_called_once_with(fake_floating_ip)
コード例 #4
0
ファイル: test_vmtasks.py プロジェクト: varunarya10/rally
 def setUp(self):
     super(VMTasksTestCase, self).setUp()
     self.scenario = vmtasks.VMTasks(
         context={"user": {
             "keypair": {
                 "name": "keypair_name"
             }
         }})
     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"))
コード例 #5
0
    def test_boot_runcommand_delete_no_floating_ip(self, mock_json_loads):
        # Setup mocks
        scenario = vmtasks.VMTasks()
        fake_server = fakes.FakeServer()
        fake_server.addresses = dict(private=[dict(version=4, addr="1.2.3.4")])

        scenario._boot_server = mock.MagicMock(return_value=fake_server)

        scenario._generate_random_name = mock.MagicMock(return_value="name")

        scenario.run_command = mock.MagicMock()
        scenario.run_command.return_value = (0, 'stdout', 'stderr')
        scenario._delete_server = mock.MagicMock()

        # Run scenario
        scenario.boot_runcommand_delete("image_id",
                                        "flavour_id",
                                        "script_path",
                                        "interpreter",
                                        fixed_network='private',
                                        floating_network='public',
                                        username="******",
                                        ip_version=4,
                                        port=22,
                                        use_floatingip=False,
                                        fakearg="f")

        # Assertions
        scenario._boot_server.assert_called_once_with('name',
                                                      'image_id',
                                                      "flavour_id",
                                                      key_name="rally_ssh_key",
                                                      fakearg="f")

        scenario.run_command.assert_called_once_with(
            fake_server.addresses['private'][0]['addr'], 22, 'username',
            "interpreter", "script_path")

        mock_json_loads.assert_called_once_with('stdout')

        scenario._delete_server.assert_called_once_with(fake_server)
コード例 #6
0
ファイル: test_vmtasks.py プロジェクト: x-ion-de/rally
 def setUp(self):
     super(VMTasksTestCase, self).setUp()
     self.scenario = vmtasks.VMTasks(
         context={"user": {
             "keypair": {
                 "name": "keypair_name"
             }
         }})
     self.clients = mock.Mock()
     self.fip = {"id": "fip_id", "ip": "fip_ip"}
     self.server = mock.Mock(networks={"foo_net": "foo_net_data"},
                             addresses={"foo_net": [{
                                 "addr": "foo_addr"
                             }]},
                             tenant_id="foo_tenant")
     self.scenario._create_volume = mock.Mock(return_value=mock.Mock(
         id="foo_volume"))
     self.scenario._boot_server_with_fip = mock.MagicMock(
         return_value=(self.server, self.fip))
     self.scenario._delete_server_with_fip = mock.MagicMock()
     self.scenario._run_command = mock.MagicMock(
         return_value=(0, "\"foo_out\"", "foo_err"))
コード例 #7
0
    def test_boot_runcommand_delete(self, mock_json_loads):
        # Setup mocks
        scenario = vmtasks.VMTasks()
        scenario._boot_server = mock.MagicMock(return_value="fake_server")
        scenario._generate_random_name = mock.MagicMock(return_value="name")
        scenario.run_command = mock.MagicMock()
        scenario.run_command.return_value = ('code', 'stdout', 'stderr')
        scenario._delete_server = mock.MagicMock()

        # Run scenario
        scenario.boot_runcommand_delete("image_id",
                                        "flavour_id",
                                        "script_path",
                                        "interpreter",
                                        network="network",
                                        username="******",
                                        ip_version="ip_version",
                                        port="port",
                                        fakearg="f")

        # Assertions
        scenario._boot_server.assert_called_once_with('name',
                                                      'image_id',
                                                      "flavour_id",
                                                      key_name="rally_ssh_key",
                                                      fakearg="f")

        scenario.run_command.assert_called_once_with("fake_server", 'username',
                                                     "network", "port",
                                                     "ip_version",
                                                     "interpreter",
                                                     "script_path")

        mock_json_loads.assert_called_once_with('stdout')

        scenario._delete_server.assert_called_once_with("fake_server")