]> xenbits.xensource.com Git - libvirt.git/commitdiff
Add warning message to XML definition files stored on disk
authorMichal Privoznik <mprivozn@redhat.com>
Fri, 29 Apr 2011 09:28:28 +0000 (11:28 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 6 May 2011 14:48:52 +0000 (16:48 +0200)
Users often edit XML 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.

AUTHORS
src/conf/domain_conf.c
src/conf/network_conf.c
src/conf/nwfilter_conf.c
src/conf/storage_conf.c
src/libvirt_private.syms
src/util/util.c
src/util/util.h

diff --git a/AUTHORS b/AUTHORS
index b951b4996edc2f83167e562038175fcba26cd95e..1bb1f0f1aba0baf2c4bd234c90c6931db1998210 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -27,6 +27,7 @@ The primary maintainers and people with commit access rights:
   Justin Clift         <jclift@redhat.com>
   Osier Yang           <jyang@redhat.com>
   Wen Congyang         <wency@cn.fujitsu.com>
+  Michal Prívozník     <mprivozn@redhat.com>
 
 Previous maintainers:
   Karel Zak            <kzak@redhat.com>
@@ -146,7 +147,6 @@ Patches have also been contributed by:
   Paweł Krześniak      <pawel.krzesniak@gmail.com>
   Kay Schubert         <kayegypt@web.de>
   Marc-André Lureau    <marcandre.lureau@redhat.com>
-  Michal Prívozník     <mprivozn@redhat.com>
   Juerg Haefliger      <juerg.haefliger@hp.com>
   Matthias Dahl        <mdvirt@designassembly.de>
   Niels de Vos         <ndevos@redhat.com>
index eae178b0fb6437f86a6451ed9833c2a7946d583f..e98af0f6a935f1ce1fe01519af5b8a67e8aa57a8 100644 (file)
@@ -8561,6 +8561,8 @@ int virDomainSaveXML(const char *configDir,
         goto cleanup;
     }
 
+    virEmitXMLWarning(fd, def->name, "edit");
+
     towrite = strlen(xml);
     if (safewrite(fd, xml, towrite) < 0) {
         virReportSystemError(errno,
index 08f7b77f357813ab17872fb6f9deb16b6ea52a03..4eb46faea1ff2cbee3d26d9762583975cc181bbd 100644 (file)
@@ -925,6 +925,8 @@ int virNetworkSaveXML(const char *configDir,
         goto cleanup;
     }
 
+    virEmitXMLWarning(fd, def->name, "net-edit");
+
     towrite = strlen(xml);
     if (safewrite(fd, xml, towrite) < 0) {
         virReportSystemError(errno,
index 5ba297212070b4304749214d9da0d6277f7e1294..eb75bad9da553dcd4f2bd8fab803614d3b528692 100644 (file)
@@ -2249,6 +2249,8 @@ int virNWFilterSaveXML(const char *configDir,
         goto cleanup;
     }
 
+    virEmitXMLWarning(fd, def->name, "nwfilter-edit");
+
     towrite = strlen(xml);
     if (safewrite(fd, xml, towrite) < 0) {
         virReportSystemError(errno,
@@ -2645,6 +2647,8 @@ virNWFilterObjSaveDef(virNWFilterDriverStatePtr driver,
         goto cleanup;
     }
 
+    virEmitXMLWarning(fd, def->name, "nwfilter-edit");
+
     towrite = strlen(xml);
     if (safewrite(fd, xml, towrite) != towrite) {
         virReportSystemError(errno,
index aeb1596ec79f7fbde8df576d61348ebaee3148f4..9be4caea764dc9f9088d8f06d4eb28ab19859bd8 100644 (file)
@@ -1551,6 +1551,8 @@ virStoragePoolObjSaveDef(virStorageDriverStatePtr driver,
         goto cleanup;
     }
 
+    virEmitXMLWarning(fd, def->name, "pool-edit");
+
     towrite = strlen(xml);
     if (safewrite(fd, xml, towrite) != towrite) {
         virReportSystemError(errno,
index ea4bf74fc12c697ba3a97a4746087c6f2e7115c4..e2e706d70e6ae6ceeb1cf9fd8e8ff580d302873f 100644 (file)
@@ -901,6 +901,7 @@ virArgvToString;
 virAsprintf;
 virBuildPathInternal;
 virDirCreate;
+virEmitXMLWarning;
 virEnumFromString;
 virEnumToString;
 virEventAddHandle;
index 9041ab6dfc9d86f3f09f63512ca624070d2a7794..4c50fcb62cb0265a78e1021031c0877696fa91cf 100644 (file)
@@ -3207,3 +3207,40 @@ bool virIsDevMapperDevice(const char *devname ATTRIBUTE_UNUSED)
     return false;
 }
 #endif
+
+int virEmitXMLWarning(int fd,
+                      const char *name,
+                      const char *cmd) {
+    size_t len;
+    const char *prologue = "<!--\n\
+WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE \n\
+OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:\n\
+  virsh ";
+    const char *epilogue = "\n\
+or other application using the libvirt API.\n\
+-->\n\n";
+
+    if (fd < 0 || !name || !cmd)
+        return -1;
+
+    len = strlen(prologue);
+    if (safewrite(fd, prologue, len) != len)
+        return -1;
+
+    len = strlen(cmd);
+    if (safewrite(fd, cmd, len) != len)
+        return -1;
+
+    if (safewrite(fd, " ", 1) != 1)
+        return -1;
+
+    len = strlen(name);
+    if (safewrite(fd, name, len) != len)
+        return -1;
+
+    len = strlen(epilogue);
+    if (safewrite(fd, epilogue, len) != len)
+        return -1;
+
+    return 0;
+}
index d320c408d1089bc18d92315475512f4d6527280f..9d8df06714de6d5530dc6527802dc3de9f4da632 100644 (file)
@@ -299,4 +299,8 @@ int virBuildPathInternal(char **path, ...) ATTRIBUTE_SENTINEL;
 char *virTimestamp(void);
 
 bool virIsDevMapperDevice(const char *devname) ATTRIBUTE_NONNULL(1);
+
+int virEmitXMLWarning(int fd,
+                      const char *name,
+                      const char *cmd) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
 #endif /* __VIR_UTIL_H__ */