domain_validate: Split out validation of disk startup policy

Move the code into 'virDomainDiskDefValidateStartupPolicy' which will be
later reused in the qemu driver.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2022-06-14 13:23:29 +02:00
parent 9a480737c8
commit 3603a18bce
3 changed files with 31 additions and 17 deletions

View File

@ -632,6 +632,32 @@ virDomainDiskDefSourceLUNValidate(const virStorageSource *src)
}
int
virDomainDiskDefValidateStartupPolicy(const virDomainDiskDef *disk)
{
if (disk->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_DEFAULT)
return 0;
if (disk->src->type == VIR_STORAGE_TYPE_NETWORK) {
virReportError(VIR_ERR_XML_ERROR,
_("disk startupPolicy '%s' is not allowed for disk of '%s' type"),
virDomainStartupPolicyTypeToString(disk->startupPolicy),
virStorageTypeToString(disk->src->type));
return -1;
}
if (disk->device != VIR_DOMAIN_DISK_DEVICE_CDROM &&
disk->device != VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
disk->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_REQUISITE) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("disk startupPolicy 'requisite' is allowed only for cdrom or floppy"));
return -1;
}
return 0;
}
static int
virDomainDiskDefValidate(const virDomainDef *def,
const virDomainDiskDef *disk)
@ -852,23 +878,8 @@ virDomainDiskDefValidate(const virDomainDef *def,
return -1;
}
if (disk->startupPolicy != VIR_DOMAIN_STARTUP_POLICY_DEFAULT) {
if (disk->src->type == VIR_STORAGE_TYPE_NETWORK) {
virReportError(VIR_ERR_XML_ERROR,
_("disk startupPolicy '%s' is not allowed for disk of '%s' type"),
virDomainStartupPolicyTypeToString(disk->startupPolicy),
virStorageTypeToString(disk->src->type));
return -1;
}
if (disk->device != VIR_DOMAIN_DISK_DEVICE_CDROM &&
disk->device != VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
disk->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_REQUISITE) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("disk startupPolicy 'requisite' is allowed only for cdrom or floppy"));
return -1;
}
}
if (virDomainDiskDefValidateStartupPolicy(disk) < 0)
return -1;
if (disk->wwn && !virValidateWWN(disk->wwn))
return -1;

View File

@ -41,4 +41,6 @@ int virDomainDeviceDefValidate(const virDomainDeviceDef *dev,
int virDomainDiskDefValidateSource(const virStorageSource *src);
int virDomainDiskDefValidateStartupPolicy(const virDomainDiskDef *disk);
int virDomainDiskDefSourceLUNValidate(const virStorageSource *src);

View File

@ -779,6 +779,7 @@ virDomainActualNetDefValidate;
virDomainDefValidate;
virDomainDeviceValidateAliasForHotplug;
virDomainDiskDefSourceLUNValidate;
virDomainDiskDefValidateStartupPolicy;
# conf/interface_conf.h