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
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
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'
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
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
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'
def test_not_found_by_id(rsps): disk = '21000000-2100-2100-2100-210000000000' with pytest.raises(NotFoundEx): Disk.get_object(disk)
def test_delete(rsps): disk = Disk.get_object('f8e4251f-6079-40a5-8e0d-fc7058e3842c') disk.destroy()
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'