Refactor defaut bootdisk and smbios1 uuid generation in own subs

This will allow code reuse for qm importovf
This commit is contained in:
Emmanuel Kasper 2017-09-13 16:10:25 +02:00 committed by Wolfgang Bumiller
parent 5fd0910be3
commit ae2fcb3be6
2 changed files with 24 additions and 16 deletions

View File

@ -542,26 +542,14 @@ __PACKAGE__->register_method({
$vollist = &$create_disks($rpcenv, $authuser, $conf, $storecfg, $vmid, $pool, $param, $storage);
# try to be smart about bootdisk
my @disks = PVE::QemuServer::valid_drive_names();
my $firstdisk;
foreach my $ds (reverse @disks) {
next if !$conf->{$ds};
my $disk = PVE::QemuServer::parse_drive($ds, $conf->{$ds});
next if PVE::QemuServer::drive_is_cdrom($disk);
$firstdisk = $ds;
}
if (!$conf->{bootdisk} && $firstdisk) {
$conf->{bootdisk} = $firstdisk;
if (!$conf->{bootdisk}) {
my $firstdisk = PVE::QemuServer::resolve_first_disk($conf);
$conf->{bootdisk} = $firstdisk if $firstdisk;
}
# auto generate uuid if user did not specify smbios1 option
if (!$conf->{smbios1}) {
my ($uuid, $uuid_str);
UUID::generate($uuid);
UUID::unparse($uuid, $uuid_str);
$conf->{smbios1} = "uuid=$uuid_str";
$conf->{smbios1} = PVE::QemuServer::generate_smbios1_uuid();
}
PVE::QemuConfig->write_config($vmid, $conf);

View File

@ -6428,6 +6428,26 @@ sub resolve_dst_disk_format {
return $format;
}
sub resolve_first_disk {
my $conf = shift;
my @disks = PVE::QemuServer::valid_drive_names();
my $firstdisk;
foreach my $ds (reverse @disks) {
next if !$conf->{$ds};
my $disk = PVE::QemuServer::parse_drive($ds, $conf->{$ds});
next if PVE::QemuServer::drive_is_cdrom($disk);
$firstdisk = $ds;
}
return $firstdisk;
}
sub generate_smbios1_uuid {
my ($uuid, $uuid_str);
UUID::generate($uuid);
UUID::unparse($uuid, $uuid_str);
return "uuid=$uuid_str";
}
# bash completion helper
sub complete_backup_archives {