Bug 57358

Summary: Не используется значение по умолчанию для CPU при импорте ВМ из OVA, OVF
Product: Sisyphus Reporter: Vladislav Glinkin <glinkinvd>
Component: pve-qemu-serverAssignee: kozorizki <kozorizki>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: andy, shaba, shrek
Version: unstable   
Hardware: x86_64   
OS: Linux   

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;  
}