Example #1
0
def test_create(rsps):
    vdc_id = 'e5d9a192-c5da-485a-b134-1b14ec9c57d9'
    vdc = Vdc.get_object(vdc_id)
    template = Template.get_object('70722cb1-6e03-4900-ad78-b680205cd002')
    storage_profile = StorageProfile.get_object(
        '563a9b7c-419a-4630-9ac8-8022d740f12a')
    network = Network.get_object('b9e6df93-0d04-4dac-a3c1-1a8539b8e445')
    disk_1 = Disk(storage_profile=storage_profile,
                  name='Main disk #1',
                  size=10)
    disk_2 = Disk(storage_profile=storage_profile,
                  name='Second disk #2',
                  size=12)

    firewall_template = next(f for f in vdc.get_firewall_templates() \
        if f.name == 'По-умолчанию')
    ports = [Port(network=network, fw_templates=[firewall_template])]

    password_field = next(f for f in template.get_fields() \
        if f.system_alias == 'password')
    metadata = [{'field': password_field, 'value': 'On3_tw0_thReE'}]

    vm = Vm(name='My New Vm',
            vdc=vdc,
            cpu=2,
            ram=4,
            template=template,
            ports=ports,
            disks=[disk_1, disk_2],
            metadata=metadata)

    assert vm.template.id == template.id
    assert len(vm.ports) == 1
    assert isinstance(vm.ports[0].network, Network)
    assert len(vm.disks) == 2
    assert isinstance(vm.disks[0], Disk)

    vm.create()

    assert vm.template.id == template.id
    assert len(vm.ports) == 1
    assert isinstance(vm.ports[0].network, Network)
    assert len(vm.ports[0].fw_templates) == 1
    assert vm.ports[0].fw_templates[
        0].id == '00000000-0000-0000-0000-000000000000'

    assert len(vm.disks) == 2
    assert isinstance(vm.disks[0], Disk)

    assert vm.id
    assert vm.name == 'My New Vm'
    assert vm.vdc.id == vdc.id
    assert vm.floating is None
Example #2
0
def test_create_with_ids_instead_of_objects(rsps):
    storage_profile = StorageProfile.get_object(
        '563a9b7c-419a-4630-9ac8-8022d740f12a')
    network = Network.get_object('b9e6df93-0d04-4dac-a3c1-1a8539b8e445')
    disk_1 = Disk(storage_profile=storage_profile,
                  name='Main disk #1',
                  size=10)  # existing disk
    disk_2 = Disk(storage_profile=storage_profile,
                  name='Second disk #2',
                  size=12)

    vdc_id = 'e5d9a192-c5da-485a-b134-1b14ec9c57d9'
    template_id = '70722cb1-6e03-4900-ad78-b680205cd002'
    field = TemplateField(id='70722cb1-6e03-4900-ad78-b680205ff002')

    ports = [
        Port(network=network.id,
             fw_templates=[
                 FirewallTemplate.get_object(
                     '00000000-0000-0000-0000-000000000000')
             ])
    ]

    metadata = [{'field': field, 'value': 'On3_tw0_thReE'}]

    vm = Vm(name='My New Vm',
            vdc=vdc_id,
            cpu=2,
            ram=4,
            template=template_id,
            ports=ports,
            disks=[disk_1, disk_2],
            metadata=metadata)

    assert vm.template.id == template_id
    assert len(vm.ports) == 1
    assert isinstance(vm.ports[0].network, Network)
    assert len(vm.disks) == 2
    assert isinstance(vm.disks[0], Disk)

    vm.create()

    assert vm.template.id == template_id
    assert len(vm.ports) == 1
    assert isinstance(vm.ports[0].network, Network)
    assert len(vm.disks) == 2
    assert isinstance(vm.disks[0], Disk)

    assert vm.id
    assert vm.name == 'My New Vm'
    assert vm.vdc.id == vdc_id
Example #3
0
def test_create_with_fip(rsps):
    vdc_id = 'e5d9a192-c5da-485a-b134-1b14ec9c57d9'
    vdc = Vdc.get_object(vdc_id)
    template = Template.get_object('70722cb1-6e03-4900-ad78-b680205cd002')
    storage_profile = StorageProfile.get_object(
        '563a9b7c-419a-4630-9ac8-8022d740f12a')
    network = Network.get_object('b9e6df93-0d04-4dac-a3c1-1a8539b8e445')
    disk_1 = Disk(storage_profile=storage_profile, name='Root disk', size=10)

    password_field = next(f for f in template.get_fields() \
        if f.system_alias == 'password')

    vm = Vm(name='My New Vm 2',
            vdc=vdc,
            cpu=1,
            ram=2,
            template=template,
            ports=[Port(network=network)],
            disks=[disk_1],
            metadata=[{
                'field': password_field,
                'value': 'On3_tw0_thReE'
            }],
            floating=Port())
    vm.create()

    assert vm.floating.ip_address == '74.53.11.5'
Example #4
0
def test_get_by_id(rsps):
    disk_id = '5fbd6cf8-b346-434f-8192-884fb36f3c2c'
    disk = Disk.get_object(disk_id)

    assert isinstance(disk, Disk)
    assert disk.name == 'Disk 2'
    assert disk.size == 15
Example #5
0
    def create_vm(self, name, template, password):  # helper
        """
        Быстрый способ создать виртуальный сервер в сети по-умолчанию и с
        настройками по-умолчанию.

        Args:
            name (str): Название нового виртуального сервера
            template (str): Название шаблона системы
            password (str): Пароль, который будет установлен на сервер
        """

        # pylint: disable=undefined-loop-variable
        for template_ in self.get_templates():
            if template_.name == template:
                break
        else:
            raise ValueError('Template not found')

        firewall = next(f for f in self.get_firewall_templates() \
            if f.id == '00000000-0000-0000-0000-000000000000')
        network = next(n for n in self.get_networks() if n.is_default)
        port = Port(network=network, fw_templates=[firewall])

        storage_profile = self.get_storage_profiles()[0]
        disk = Disk(name='Системный диск',
                    size=template_.min_hdd,
                    storage_profile=storage_profile)

        metadata = []
        for field in template_.get_fields():
            value = field.default
            if field.system_alias == 'password':
                value = password
            metadata.append(VmMetadata(field=field, value=value))

        vm = Vm(name=name,
                cpu=template_.min_cpu,
                ram=template_.min_ram,
                vdc=self,
                template=template_,
                metadata=metadata,
                ports=[port],
                disks=[disk],
                token=self.token)
        vm.create()

        return vm
Example #6
0
def test_add_disk(rsps):
    vm_id = 'b795bc88-5b9c-49b7-bed6-91669794bfda'
    vm = Vm.get_object(vm_id)

    assert isinstance(vm, Vm)
    assert len(vm.disks) == 1
    assert vm.disks[0].scsi == '0:0'

    storage_profile_id = '563a9b7c-419a-4630-9ac8-8022d740f12a'
    disk = Disk(storage_profile=storage_profile_id,
                name='Second disk',
                size=12)

    assert disk.scsi is None  # Because it's a new disk
    vm.add_disk(disk)
    assert len(vm.disks) == 2
    assert vm.disks[1].scsi == '0:1'
    assert disk.scsi == '0:1'
Example #7
0
def test_not_found_by_id(rsps):
    disk = '21000000-2100-2100-2100-210000000000'
    with pytest.raises(NotFoundEx):
        Disk.get_object(disk)
Example #8
0
def test_delete(rsps):
    disk = Disk.get_object('f8e4251f-6079-40a5-8e0d-fc7058e3842c')
    disk.destroy()
Example #9
0
def test_rename(rsps):
    disk = Disk.get_object('5fbd6cf8-b346-434f-8192-884fb36f3c2c')
    disk.name = 'Disk 2 renamed'
    disk.save()

    assert disk.name == 'Disk 2 renamed'