Add new check in the new function will avoid some vm disappear
after restart libvirtd, and the new check will be called when
define or create a vm.
And after some version, maybe we can move these check to the right place.
Signed-off-by: Luyao Huang <lhuang(a)redhat.com>
---
src/bhyve/bhyve_driver.c | 4 ++--
src/conf/domain_conf.c | 11 +++++++++++
src/conf/domain_conf.h | 1 +
src/esx/esx_driver.c | 2 +-
src/libxl/libxl_driver.c | 4 ++--
src/lxc/lxc_driver.c | 4 ++--
src/openvz/openvz_driver.c | 4 ++--
src/parallels/parallels_driver.c | 2 +-
src/phyp/phyp_driver.c | 2 +-
src/qemu/qemu_driver.c | 4 ++--
src/test/test_driver.c | 4 ++--
src/uml/uml_driver.c | 4 ++--
src/vbox/vbox_common.c | 2 +-
src/vmware/vmware_driver.c | 4 ++--
src/xen/xen_driver.c | 4 ++--
src/xenapi/xenapi_driver.c | 4 ++--
16 files changed, 36 insertions(+), 24 deletions(-)
diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c
index 21db277..3cea3d6 100644
--- a/src/bhyve/bhyve_driver.c
+++ b/src/bhyve/bhyve_driver.c
@@ -495,7 +495,7 @@ bhyveDomainDefineXMLFlags(virConnectPtr conn, const char *xml,
unsigned int flag
virDomainObjPtr vm = NULL;
virObjectEventPtr event = NULL;
virCapsPtr caps = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
@@ -895,7 +895,7 @@ bhyveDomainCreateXML(virConnectPtr conn,
virObjectEventPtr event = NULL;
virCapsPtr caps = NULL;
unsigned int start_flags = 0;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_START_AUTODESTROY |
VIR_DOMAIN_START_VALIDATE, NULL);
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index cd6ee22..831f033 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -13507,6 +13507,13 @@ virDomainThreadSchedParse(xmlNodePtr node,
return -1;
}
+static int
+virDomainDefNewCheck(virDomainDefPtr def)
+{
+ /*TO DO*/
+ return 0;
+}
+
static virDomainDefPtr
virDomainDefParseXML(xmlDocPtr xml,
xmlNodePtr root,
@@ -15398,6 +15405,10 @@ virDomainDefParseXML(xmlDocPtr xml,
if (virDomainDefPostParse(def, caps, xmlopt) < 0)
goto error;
+ if (flags & VIR_DOMAIN_DEF_PARSE_NEW_CHECK &&
+ virDomainDefNewCheck(def) < 0)
+ goto error;
+
/* Auto-add any implied controllers which aren't present */
if (virDomainDefAddImplicitControllers(def) < 0)
goto error;
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 84e880a..21341f7 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2528,6 +2528,7 @@ typedef enum {
/* parse only source half of <disk> */
VIR_DOMAIN_DEF_PARSE_DISK_SOURCE = 1 << 7,
VIR_DOMAIN_DEF_PARSE_VALIDATE = 1 << 8,
+ VIR_DOMAIN_DEF_PARSE_NEW_CHECK = 1 << 9,
} virDomainDefParseFlags;
typedef enum {
diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c
index 179f44c..db0a309 100644
--- a/src/esx/esx_driver.c
+++ b/src/esx/esx_driver.c
@@ -3042,7 +3042,7 @@ esxDomainDefineXMLFlags(virConnectPtr conn, const char *xml,
unsigned int flags)
char *taskInfoErrorMessage = NULL;
virDomainPtr domain = NULL;
const char *src;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 05f6eb1..23eb7e4 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -862,7 +862,7 @@ libxlDomainCreateXML(virConnectPtr conn, const char *xml,
virDomainObjPtr vm = NULL;
virDomainPtr dom = NULL;
libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_START_PAUSED |
VIR_DOMAIN_START_VALIDATE, NULL);
@@ -2600,7 +2600,7 @@ libxlDomainDefineXMLFlags(virConnectPtr conn, const char *xml,
unsigned int flag
virDomainPtr dom = NULL;
virObjectEventPtr event = NULL;
virDomainDefPtr oldDef = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index 245000d..38b4206 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -456,7 +456,7 @@ lxcDomainDefineXMLFlags(virConnectPtr conn, const char *xml, unsigned
int flags)
virDomainDefPtr oldDef = NULL;
virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver);
virCapsPtr caps = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
@@ -1198,7 +1198,7 @@ lxcDomainCreateXMLWithFiles(virConnectPtr conn,
virObjectEventPtr event = NULL;
virLXCDriverConfigPtr cfg = virLXCDriverGetConfig(driver);
virCapsPtr caps = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_START_AUTODESTROY |
VIR_DOMAIN_START_VALIDATE, NULL);
diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c
index d29e35b..fcc2ec1 100644
--- a/src/openvz/openvz_driver.c
+++ b/src/openvz/openvz_driver.c
@@ -994,7 +994,7 @@ openvzDomainDefineXMLFlags(virConnectPtr conn, const char *xml,
unsigned int fla
virDomainDefPtr vmdef = NULL;
virDomainObjPtr vm = NULL;
virDomainPtr dom = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
@@ -1091,7 +1091,7 @@ openvzDomainCreateXML(virConnectPtr conn, const char *xml,
virDomainObjPtr vm = NULL;
virDomainPtr dom = NULL;
const char *progstart[] = {VZCTL, "--quiet", "start",
PROGRAM_SENTINEL, NULL};
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_START_VALIDATE, NULL);
diff --git a/src/parallels/parallels_driver.c b/src/parallels/parallels_driver.c
index f5e58a8..59e371e 100644
--- a/src/parallels/parallels_driver.c
+++ b/src/parallels/parallels_driver.c
@@ -695,7 +695,7 @@ parallelsDomainDefineXMLFlags(virConnectPtr conn, const char *xml,
unsigned int
virDomainPtr retdom = NULL;
virDomainDefPtr def;
virDomainObjPtr olddom = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c
index f4db2e0..97db14e 100644
--- a/src/phyp/phyp_driver.c
+++ b/src/phyp/phyp_driver.c
@@ -3560,7 +3560,7 @@ phypDomainCreateXML(virConnectPtr conn,
lparPtr *lpars = uuid_table->lpars;
size_t i = 0;
char *managed_system = phyp_driver->managed_system;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_START_VALIDATE, NULL);
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index becf415..86aa92d 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -1675,7 +1675,7 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn,
unsigned int start_flags = VIR_QEMU_PROCESS_START_COLD;
virQEMUCapsPtr qemuCaps = NULL;
virCapsPtr caps = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_START_PAUSED |
VIR_DOMAIN_START_AUTODESTROY |
@@ -7357,7 +7357,7 @@ static virDomainPtr qemuDomainDefineXMLFlags(virConnectPtr conn,
const char *xml
virQEMUCapsPtr qemuCaps = NULL;
virQEMUDriverConfigPtr cfg;
virCapsPtr caps = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
diff --git a/src/test/test_driver.c b/src/test/test_driver.c
index 07cc032..7e1924e 100644
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -1745,7 +1745,7 @@ testDomainCreateXML(virConnectPtr conn, const char *xml,
virDomainDefPtr def;
virDomainObjPtr dom = NULL;
virObjectEventPtr event = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_START_VALIDATE, NULL);
@@ -2943,7 +2943,7 @@ static virDomainPtr testDomainDefineXMLFlags(virConnectPtr conn,
virDomainObjPtr dom = NULL;
virObjectEventPtr event = NULL;
virDomainDefPtr oldDef = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c
index 2d59126..d526ed8 100644
--- a/src/uml/uml_driver.c
+++ b/src/uml/uml_driver.c
@@ -1612,7 +1612,7 @@ static virDomainPtr umlDomainCreateXML(virConnectPtr conn, const
char *xml,
virDomainObjPtr vm = NULL;
virDomainPtr dom = NULL;
virObjectEventPtr event = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_START_AUTODESTROY |
VIR_DOMAIN_START_VALIDATE, NULL);
@@ -2094,7 +2094,7 @@ umlDomainDefineXMLFlags(virConnectPtr conn, const char *xml,
unsigned int flags)
virDomainDefPtr def;
virDomainObjPtr vm = NULL;
virDomainPtr dom = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c
index bb4de15..62e148b 100644
--- a/src/vbox/vbox_common.c
+++ b/src/vbox/vbox_common.c
@@ -1855,7 +1855,7 @@ vboxDomainDefineXMLFlags(virConnectPtr conn, const char *xml,
unsigned int flags
nsresult rc;
char uuidstr[VIR_UUID_STRING_BUFLEN];
virDomainPtr ret = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
diff --git a/src/vmware/vmware_driver.c b/src/vmware/vmware_driver.c
index 3382994..1a486de 100644
--- a/src/vmware/vmware_driver.c
+++ b/src/vmware/vmware_driver.c
@@ -374,7 +374,7 @@ vmwareDomainDefineXMLFlags(virConnectPtr conn, const char *xml,
unsigned int fla
char *vmxPath = NULL;
vmwareDomainPtr pDomain = NULL;
virVMXContext ctx;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
@@ -665,7 +665,7 @@ vmwareDomainCreateXML(virConnectPtr conn, const char *xml,
char *vmxPath = NULL;
vmwareDomainPtr pDomain = NULL;
virVMXContext ctx;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_START_VALIDATE, NULL);
diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c
index 3b11e9a..fc31e2d 100644
--- a/src/xen/xen_driver.c
+++ b/src/xen/xen_driver.c
@@ -775,7 +775,7 @@ xenUnifiedDomainCreateXML(virConnectPtr conn,
xenUnifiedPrivatePtr priv = conn->privateData;
virDomainDefPtr def = NULL;
virDomainPtr ret = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_START_VALIDATE, NULL);
@@ -1897,7 +1897,7 @@ xenUnifiedDomainDefineXMLFlags(virConnectPtr conn, const char *xml,
unsigned int
xenUnifiedPrivatePtr priv = conn->privateData;
virDomainDefPtr def = NULL;
virDomainPtr ret = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
diff --git a/src/xenapi/xenapi_driver.c b/src/xenapi/xenapi_driver.c
index d495f21..06ba1e3 100644
--- a/src/xenapi/xenapi_driver.c
+++ b/src/xenapi/xenapi_driver.c
@@ -553,7 +553,7 @@ xenapiDomainCreateXML(virConnectPtr conn,
xen_vm_record *record = NULL;
xen_vm vm = NULL;
virDomainPtr domP = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
if (!priv->caps)
return NULL;
@@ -1735,7 +1735,7 @@ xenapiDomainDefineXMLFlags(virConnectPtr conn, const char *xml,
unsigned int fla
xen_vm_record *record = NULL;
xen_vm vm = NULL;
virDomainPtr domP = NULL;
- unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE;
+ unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE |
VIR_DOMAIN_DEF_PARSE_NEW_CHECK;
virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL);
--
1.8.3.1