return ret;
}
+static int vzCheckConfigUpdateFlags(virDomainObjPtr dom, unsigned int *flags)
+{
+ if (virDomainObjUpdateModificationImpact(dom, flags) < 0)
+ return -1;
+
+ if (!(*flags & VIR_DOMAIN_AFFECT_CONFIG)) {
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+ _("domain config update needs VIR_DOMAIN_AFFECT_CONFIG "
+ "flag to be set"));
+ return -1;
+ }
+
+ if (virDomainObjIsActive(dom) && !(*flags & VIR_DOMAIN_AFFECT_LIVE)) {
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+ _("Updates on a running domain need "
+ "VIR_DOMAIN_AFFECT_LIVE flag"));
+ return -1;
+ }
+
+ return 0;
+}
+
static int vzDomainAttachDeviceFlags(virDomainPtr dom, const char *xml,
unsigned int flags)
{
vzConnPtr privconn = dom->conn->privateData;
virDomainDeviceDefPtr dev = NULL;
virDomainObjPtr privdom = NULL;
- bool domactive = false;
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
VIR_DOMAIN_AFFECT_CONFIG, -1);
if (!(privdom = vzDomObjFromDomain(dom)))
return -1;
- if (!(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("device attach needs VIR_DOMAIN_AFFECT_CONFIG "
- "flag to be set"));
+ if (vzCheckConfigUpdateFlags(privdom, &flags) < 0)
goto cleanup;
- }
-
- domactive = virDomainObjIsActive(privdom);
- if (!domactive && (flags & VIR_DOMAIN_AFFECT_LIVE)) {
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("cannot do live update a device on "
- "inactive domain"));
- goto cleanup;
- }
- if (domactive && !(flags & VIR_DOMAIN_AFFECT_LIVE)) {
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("Updates on a running domain need "
- "VIR_DOMAIN_AFFECT_LIVE flag"));
- }
dev = virDomainDeviceDefParse(xml, privdom->def, privconn->caps,
privconn->xmlopt, VIR_DOMAIN_XML_INACTIVE);
vzConnPtr privconn = dom->conn->privateData;
virDomainDeviceDefPtr dev = NULL;
virDomainObjPtr privdom = NULL;
- bool domactive = false;
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
VIR_DOMAIN_AFFECT_CONFIG, -1);
if (privdom == NULL)
return -1;
- if (!(flags & VIR_DOMAIN_AFFECT_CONFIG)) {
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("device detach needs VIR_DOMAIN_AFFECT_CONFIG "
- "flag to be set"));
+ if (vzCheckConfigUpdateFlags(privdom, &flags) < 0)
goto cleanup;
- }
-
- domactive = virDomainObjIsActive(privdom);
- if (!domactive && (flags & VIR_DOMAIN_AFFECT_LIVE)) {
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("cannot do live update a device on "
- "inactive domain"));
- goto cleanup;
- }
- if (domactive && !(flags & VIR_DOMAIN_AFFECT_LIVE)) {
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("Updates on a running domain need "
- "VIR_DOMAIN_AFFECT_LIVE flag"));
- }
dev = virDomainDeviceDefParse(xml, privdom->def, privconn->caps,
privconn->xmlopt, VIR_DOMAIN_XML_INACTIVE);