Bug 57358 - Не используется значение по умолчанию для CPU при импорте ВМ из OVA, OVF
Summary: Не используется значение по умолчанию для CPU при импорте ВМ из OVA, OVF
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: pve-qemu-server (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: kozorizki@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-12-25 12:57 MSK by Vladislav Glinkin
Modified: 2025-12-25 12:57 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vladislav Glinkin 2025-12-25 12:57:09 MSK
Версия пакета: pve-qemu-server-9.0.18-alt1

Шаги воспроизведения:
1) Импортировать виртуальную машину из OVF файла без явного указания типа CPU, используя значение по умолчанию.

Фактический результат:
Если при импорте виртуальной машины не указать тип CPU явно, то возникает ошибка "cpu: invalid format - CPU is missing cputype". Значение по умолчанию (kvm64) не используется.

Похоже, что дело в функции validate_cpu_conf, объявленной в /usr/share/perl5/PVE/QemuServer/CPUConfig.pm:

sub validate_cpu_conf {  
   my ($cpu) = @_;    
   # required, but can't be forced in schema since it's encoded in section header for custom models  
   die "CPU is missing cputype\n" if !$cpu->{cputype};  
   return $cpu;  
}
В случае, если тип CPU не определён - то она даже не пытается использовать значением по умолчанию.

При создании виртуальных машин такое поведение не воспроизводится - значение по умолчанию используется.

Если в функцию validate_cpu_conf добавить установку значения по умолчанию, то данное поведение не воспроизводится. Как пример:

--- a/usr/share/perl5/PVE/QemuServer/CPUConfig.pm  
+++ b/usr/share/perl5/PVE/QemuServer/CPUConfig.pm  
@@ -310,6 +310,9 @@ PVE::JSONSchema::register_format('pve-cpu-conf', $cpu_fmt, \&validate_cpu_conf);  
sub validate_cpu_conf {  
    my ($cpu) = @_;  
    # required, but can't be forced in schema since it's encoded in section header for custom models  
+    if (!defined($cpu->{cputype}) || $cpu->{cputype} eq '') {  
+        $cpu->{cputype} = $cpu_fmt->{cputype}->{default};  
+    }  
    die "CPU is missing cputype\n" if !$cpu->{cputype};  
    return $cpu;  
}