On Thu, Apr 28, 2011 at 01:42:37PM -0400, Laine Stump wrote: > On 04/28/2011 12:34 PM, Michal Privoznik wrote: > >Users often edit XML domain file stored in configuration directory > >thinking of modifying a domain/network/pool/etc. Thus it is wise > >to let them know they are using the wrong way and give them hint. > >--- > > src/conf/domain_conf.c | 2 ++ > > src/conf/network_conf.c | 1 + > > src/conf/nwfilter_conf.c | 3 +++ > > src/conf/storage_conf.c | 2 ++ > > src/libvirt_private.syms | 1 + > > src/util/util.c | 22 ++++++++++++++++++++++ > > src/util/util.h | 2 ++ > > 7 files changed, 33 insertions(+), 0 deletions(-) > > > >diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > >index 2a681d9..4cd1228 100644 > >--- a/src/conf/domain_conf.c > >+++ b/src/conf/domain_conf.c > >@@ -8543,6 +8543,7 @@ int virDomainSaveConfig(const char *configDir, > > VIR_DOMAIN_XML_WRITE_FLAGS))) > > goto cleanup; > > > >+ virSavePrependWarning(&xml); > > if (virDomainSaveXML(configDir, def, xml)) > > goto cleanup; > > > >@@ -8563,6 +8564,7 @@ int virDomainSaveStatus(virCapsPtr caps, > > if (!(xml = virDomainObjFormat(caps, obj, flags))) > > goto cleanup; > > > >+ virSavePrependWarning(&xml); > > if (virDomainSaveXML(statusDir, obj->def, xml)) > > goto cleanup; > > > >diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c > >index 5738757..82f10e6 100644 > >--- a/src/conf/network_conf.c > >+++ b/src/conf/network_conf.c > >@@ -959,6 +959,7 @@ int virNetworkSaveConfig(const char *configDir, > > if (!(xml = virNetworkDefFormat(def))) > > goto cleanup; > > > >+ virSavePrependWarning(&xml); > > if (virNetworkSaveXML(configDir, def, xml)) > > goto cleanup; > > > >diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c > >index 09dc32b..fcd0b24 100644 > >--- a/src/conf/nwfilter_conf.c > >+++ b/src/conf/nwfilter_conf.c > >@@ -2282,6 +2282,7 @@ int virNWFilterSaveConfig(const char *configDir, > > if (!(xml = virNWFilterDefFormat(def))) > > goto cleanup; > > > >+ virSavePrependWarning(&xml); > > if (virNWFilterSaveXML(configDir, def, xml)) > > goto cleanup; > > > >@@ -2635,6 +2636,8 @@ virNWFilterObjSaveDef(virNWFilterDriverStatePtr driver, > > return -1; > > } > > > >+ virSavePrependWarning(&xml); > >+ > > if ((fd = open(nwfilter->configFile, > > O_WRONLY | O_CREAT | O_TRUNC, > > S_IRUSR | S_IWUSR ))< 0) { > >diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c > >index 116898d..96aa567 100644 > >--- a/src/conf/storage_conf.c > >+++ b/src/conf/storage_conf.c > >@@ -1542,6 +1542,8 @@ virStoragePoolObjSaveDef(virStorageDriverStatePtr driver, > > return -1; > > } > > > >+ virSavePrependWarning(&xml); > >+ > > if ((fd = open(pool->configFile, > > O_WRONLY | O_CREAT | O_TRUNC, > > S_IRUSR | S_IWUSR ))< 0) { > >diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms > >index 1b22be6..f2c005e 100644 > >--- a/src/libvirt_private.syms > >+++ b/src/libvirt_private.syms > >@@ -946,6 +946,7 @@ virRandom; > > virRandomInitialize; > > virRun; > > virRunWithHook; > >+virSavePrependWarning; > > virSetBlocking; > > virSetCloseExec; > > virSetInherit; > >diff --git a/src/util/util.c b/src/util/util.c > >index 1bb0328..c6a4634 100644 > >--- a/src/util/util.c > >+++ b/src/util/util.c > >@@ -3204,3 +3204,25 @@ bool virIsDevMapperDevice(const char *devname ATTRIBUTE_UNUSED) > > return false; > > } > > #endif > >+ > >+int virSavePrependWarning(char **xml) { > >+ char *retPtr = NULL; > >+ int ret; > >+ > >+ ret = virAsprintf(&retPtr, "%s\n%s", > >+ _("<!--\n\ > >+WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE\n\ > >+OVERWRITTEN AND LOST. Changes to xml configurations should be made using virsh\n\ > >+edit or other application using the libvirt API. See:\n\ > > either s/or other/or another/ or else s/application/applications/ I think it's ok as written, but another would also be correct. > >+\n\ > >+http://wiki.libvirt.org/wiki/index.php?title=FAQ#Where_are_VM_config_files_stored.3F_How_do_I_edit_a_VM.27s_XML_config.3F\n\ > >+-->\n"), > > Can this URL change if the wiki is edited? Do we maybe want to put > this info in a less modifiable place? (Dunno, just asking.) That's a good point. If we're going to point people at a URL, it should be a static page. (My bad for suggesting that URL in the first place.) > >+ *xml); > >+ > >+ if (ret< 0) > >+ return ret; > >+ > >+ VIR_FREE(*xml); > > I'm not really comfortable that it requires the caller to initialize > to 0. But that may be just me - anyone else have an opinion? > > >+ *xml = retPtr; > >+ return ret; > >+} > >diff --git a/src/util/util.h b/src/util/util.h > >index d320c40..a6a91de 100644 > >--- a/src/util/util.h > >+++ b/src/util/util.h > >@@ -299,4 +299,6 @@ int virBuildPathInternal(char **path, ...) ATTRIBUTE_SENTINEL; > > char *virTimestamp(void); > > > > bool virIsDevMapperDevice(const char *devname) ATTRIBUTE_NONNULL(1); > >+ > >+int virSavePrependWarning(char **xml); > > #endif /* __VIR_UTIL_H__ */ > > -- > libvir-list mailing list > libvir-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/libvir-list -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list