| Summary: | Ошибка при попытке импорта ВМ из файла ova в веб-интерфейсе | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Elena Mishina <lepata> | ||||||
| Component: | pve-storage | Assignee: | Alexey Shabalin <shaba> | ||||||
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||||
| Severity: | normal | ||||||||
| Priority: | P5 | CC: | darisishe, glinkinvd, polipoki, shaba, shrek | ||||||
| Version: | unstable | ||||||||
| Hardware: | x86_64 | ||||||||
| OS: | Linux | ||||||||
| Attachments: |
|
||||||||
Created attachment 18494 [details]
Успешный импорт, при наличии файла vmdk
Столкнулся с этой же проблемой при проверке документации.
Для решения данной проблемы помогло следующее изменение:
--- a/usr/share/perl5/PVE/GuestImport/OVF.pm
+++ b/usr/share/perl5/PVE/GuestImport/OVF.pm
@@ -363,8 +363,14 @@ ovf:Item[rasd:InstanceID='%s']/rasd:ResourceType", $controller_id,
# and die if the diskimage is not somewhere under the $ovf path
my $ovf_dir = realpath(dirname(File::Spec->rel2abs($ovf)))
or die "could not get absolute path of $ovf: $!\n";
- my $backing_file_path = realpath(join('/', $ovf_dir, $filepath))
- or die "could not get absolute path of $filepath: $!\n";
+ my $backing_file_path = $ovf;
+ if ($isOva) {
+ $backing_file_path = $ovf;
+ }
+ else {
+ $backing_file_path = realpath(join('/', $ovf_dir, $filepath))
+ or die "could not get absolute path of $filepath: $!\n";
+ }
if ($backing_file_path !~ /^\Q${ovf_dir}\E/) {
die "error parsing $filepath, are you using a symlink ?\n";
}
С таким изменением работает импорт из .ova файла без предварительной распаковки вручную, так и продолжает работать импорт из .ovf файлов. Поведение будет соответствовать нашей документации (https://docs.altlinux.org/ru-RU/alt-server-v/11.1/html/alt-server-v/ch33s03s02.html).
(Ответ для Vladislav Glinkin на комментарий #2) > Столкнулся с этой же проблемой при проверке документации. Версия: pve-storage-9.0.13-alt1 (Ответ для Vladislav Glinkin на комментарий #2) > + my $backing_file_path = $ovf; > + if ($isOva) { > + $backing_file_path = $ovf; > + } > ... Здесь опечатался, в первой строке достаточно просто объявить переменную backing_file_path: my $backing_file_path; При обновлении pve в p11 из task, поведение не поменялось. Все также не дает произвести импорт через веб-интерфейс файла формата *.ova. https://packages.altlinux.org/ru/tasks/405588/ Дополнительно нельзя выполнить импорт файла формата ovf через веб-интерфейс PVE. Отображается ошибка "Неверное расширение файла". Импорт возможно произвести только через командную строку. https://docs.altlinux.org/ru-RU/alt-server-v/11.1/html/alt-server-v/ch33s03s03.html pve-storage-9.1.0-alt2 -> sisyphus: Tue Feb 10 2026 Sergey Konev <darisishe@altlinux> 9.1.0-alt2 - Use OVA file itself as path to diskimage (Closes: 54360) |
Created attachment 18493 [details] Ошибка при попытке импорта pve-storage 8.3.6-alt1 Шаги воспроизведения: 1) настроить файловое хранилище с допустимым типом содержимого import; 2) загрузить файл OVA в хранилище: выбрать хранилище, перейти на вкладку Импорт, нажать кнопку Отправить, выбрать файл и нажать кнопку Отправить. 3) импортировать ВМ: выбрать файл OVA в хранилище, нажать кнопку Импорт Ожидаемый результат: Открывается окно импорта, где на вкладке "Дополнительно" отображаются диски импортируемой ВМ Получаемый результат: Ошибка (см.скриншот): could not get absolute path of WinDev2407Eval-disk001.vmdk: No such file or directory (500) (или, в некоторых случаях, диски просто не отображаются, как-будто их нет) Если в хранилище отдельно загрузить файл vmdk, то окно открывается и ВМ успешно импортируется. На первый взгляд кажется, что файл ovf из ova извлекается (распаковывается), а файлы vmdk - нет: судя по /usr/share/perl5/PVE/GuestImport/OVF.pm файл vmdk ожидается в каталоге /mnt/nfs-vol/import (для хранилища NFS).