mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
lxc: reuse virDomainObjUpdateModificationImpact
Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
This commit is contained in:
parent
4cf22bdcfd
commit
7d3230d36d
@ -4996,43 +4996,22 @@ static int lxcDomainAttachDeviceFlags(virDomainPtr dom,
|
||||
virDomainDefPtr vmdef = NULL;
|
||||
virDomainDeviceDefPtr dev = NULL, dev_copy = NULL;
|
||||
int ret = -1;
|
||||
unsigned int affect;
|
||||
virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver);
|
||||
|
||||
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
|
||||
VIR_DOMAIN_AFFECT_CONFIG, -1);
|
||||
|
||||
affect = flags & (VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG);
|
||||
|
||||
if (!(vm = lxcDomObjFromDomain(dom)))
|
||||
goto cleanup;
|
||||
|
||||
if (virDomainAttachDeviceFlagsEnsureACL(dom->conn, vm->def, flags) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (virDomainObjIsActive(vm)) {
|
||||
if (affect == VIR_DOMAIN_AFFECT_CURRENT)
|
||||
flags |= VIR_DOMAIN_AFFECT_LIVE;
|
||||
} else {
|
||||
if (affect == VIR_DOMAIN_AFFECT_CURRENT)
|
||||
flags |= VIR_DOMAIN_AFFECT_CONFIG;
|
||||
/* check consistency between flags and the vm state */
|
||||
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||
_("cannot do live update a device on "
|
||||
"inactive domain"));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if (!(caps = virLXCDriverGetCapabilities(driver, false)))
|
||||
goto cleanup;
|
||||
|
||||
if ((flags & VIR_DOMAIN_AFFECT_CONFIG) && !vm->persistent) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||
_("cannot modify device on transient domain"));
|
||||
goto cleanup;
|
||||
}
|
||||
if (virDomainObjUpdateModificationImpact(vm, &flags) < 0)
|
||||
goto cleanup;
|
||||
|
||||
dev = dev_copy = virDomainDeviceDefParse(xml, vm->def,
|
||||
caps, driver->xmlopt,
|
||||
@ -5124,41 +5103,20 @@ static int lxcDomainUpdateDeviceFlags(virDomainPtr dom,
|
||||
virDomainDefPtr vmdef = NULL;
|
||||
virDomainDeviceDefPtr dev = NULL, dev_copy = NULL;
|
||||
int ret = -1;
|
||||
unsigned int affect;
|
||||
virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver);
|
||||
|
||||
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
|
||||
VIR_DOMAIN_AFFECT_CONFIG |
|
||||
VIR_DOMAIN_DEVICE_MODIFY_FORCE, -1);
|
||||
|
||||
affect = flags & (VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG);
|
||||
|
||||
if (!(vm = lxcDomObjFromDomain(dom)))
|
||||
goto cleanup;
|
||||
|
||||
if (virDomainUpdateDeviceFlagsEnsureACL(dom->conn, vm->def, flags) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (virDomainObjIsActive(vm)) {
|
||||
if (affect == VIR_DOMAIN_AFFECT_CURRENT)
|
||||
flags |= VIR_DOMAIN_AFFECT_LIVE;
|
||||
} else {
|
||||
if (affect == VIR_DOMAIN_AFFECT_CURRENT)
|
||||
flags |= VIR_DOMAIN_AFFECT_CONFIG;
|
||||
/* check consistency between flags and the vm state */
|
||||
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||
_("cannot do live update a device on "
|
||||
"inactive domain"));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if ((flags & VIR_DOMAIN_AFFECT_CONFIG) && !vm->persistent) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||
_("cannot modify device on transient domain"));
|
||||
goto cleanup;
|
||||
}
|
||||
if (virDomainObjUpdateModificationImpact(vm, &flags) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (!(caps = virLXCDriverGetCapabilities(driver, false)))
|
||||
goto cleanup;
|
||||
@ -5238,40 +5196,19 @@ static int lxcDomainDetachDeviceFlags(virDomainPtr dom,
|
||||
virDomainDefPtr vmdef = NULL;
|
||||
virDomainDeviceDefPtr dev = NULL, dev_copy = NULL;
|
||||
int ret = -1;
|
||||
unsigned int affect;
|
||||
virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver);
|
||||
|
||||
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
|
||||
VIR_DOMAIN_AFFECT_CONFIG, -1);
|
||||
|
||||
affect = flags & (VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG);
|
||||
|
||||
if (!(vm = lxcDomObjFromDomain(dom)))
|
||||
goto cleanup;
|
||||
|
||||
if (virDomainDetachDeviceFlagsEnsureACL(dom->conn, vm->def, flags) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (virDomainObjIsActive(vm)) {
|
||||
if (affect == VIR_DOMAIN_AFFECT_CURRENT)
|
||||
flags |= VIR_DOMAIN_AFFECT_LIVE;
|
||||
} else {
|
||||
if (affect == VIR_DOMAIN_AFFECT_CURRENT)
|
||||
flags |= VIR_DOMAIN_AFFECT_CONFIG;
|
||||
/* check consistency between flags and the vm state */
|
||||
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||
_("cannot do live update a device on "
|
||||
"inactive domain"));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if ((flags & VIR_DOMAIN_AFFECT_CONFIG) && !vm->persistent) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||
_("cannot modify device on transient domain"));
|
||||
goto cleanup;
|
||||
}
|
||||
if (virDomainObjUpdateModificationImpact(vm, &flags) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (!(caps = virLXCDriverGetCapabilities(driver, false)))
|
||||
goto cleanup;
|
||||
|
Loading…
x
Reference in New Issue
Block a user