]> xenbits.xensource.com Git - libvirt.git/commitdiff
snapshot: Define explicit flags for snapshot xml
authorEric Blake <eblake@redhat.com>
Wed, 13 Feb 2019 21:09:05 +0000 (15:09 -0600)
committerEric Blake <eblake@redhat.com>
Wed, 20 Feb 2019 03:34:42 +0000 (21:34 -0600)
Commit f609cb85 (0.9.5) introduced virDomainSnapshotGetXMLDesc()'s use
of @flags as a subset of virDomainXMLFlags, documenting that 2 of the
3 flags defined at the time would never be valid.  Later, commit
28f8dfdc (1.0.0) introduced a new flag, VIR_DOMAIN_XML_MIGRATABLE, but
did not adjust the snapshot documentation to declare it as invalid.
However, since the flag is not accepted as valid by any of the
drivers (remote is just passthrough; esx and vbox don't support flags;
qemu, test, and vz only support VIR_DOMAIN_XML_SECURE), and it is
unlikely that the domain state saved off during a snapshot creation
needs to be migration-friendly (as the snapshot is not the source of
a migration), it is easier to just define an explicit set of supported
flags directly related to the snapshot API rather than trying to
borrow from domain API, and risking confusion if even more domain
flags are added later (in fact, I have an upcoming patch that plans to
add a new flag to virDomainGetXMLDesc that makes no sense for
snapshots).

There is no API or ABI impact (since we purposefully used unsigned int
rather than an enum type in public API, and since the new flag name
carries the same value as the reused name).

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
include/libvirt/libvirt-domain-snapshot.h
src/libvirt-domain-snapshot.c
src/qemu/qemu_driver.c
src/remote/remote_protocol.x
src/test/test_driver.c
src/vz/vz_driver.c

index 0c9985f7f432cdbc59edc3e6847e10d8133a3638..2532b99c5881c7af65aa28ba5a2b7014d695e4d1 100644 (file)
@@ -78,6 +78,10 @@ virDomainSnapshotPtr virDomainSnapshotCreateXML(virDomainPtr domain,
                                                 const char *xmlDesc,
                                                 unsigned int flags);
 
+typedef enum {
+    VIR_DOMAIN_SNAPSHOT_XML_SECURE         = VIR_DOMAIN_XML_SECURE, /* dump security sensitive information too */
+} virDomainSnapshotXMLFlags;
+
 /* Dump the XML of a snapshot */
 char *virDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot,
                                   unsigned int flags);
index 100326a5e73a15047a4e9ff29ddfffd7ea346459..4e46f0876b1194c37bf7857950786c100b4b58d2 100644 (file)
@@ -244,14 +244,13 @@ virDomainSnapshotCreateXML(virDomainPtr domain,
 /**
  * virDomainSnapshotGetXMLDesc:
  * @snapshot: a domain snapshot object
- * @flags: bitwise-OR of subset of virDomainXMLFlags
+ * @flags: bitwise-OR of supported virDomainSnapshotXMLFlags
  *
  * Provide an XML description of the domain snapshot.
  *
  * No security-sensitive data will be included unless @flags contains
- * VIR_DOMAIN_XML_SECURE; this flag is rejected on read-only
- * connections.  For this API, @flags should not contain either
- * VIR_DOMAIN_XML_INACTIVE or VIR_DOMAIN_XML_UPDATE_CPU.
+ * VIR_DOMAIN_SNAPSHOT_XML_SECURE; this flag is rejected on read-only
+ * connections.
  *
  * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case of error.
  *         the caller must free() the returned value.
@@ -268,7 +267,8 @@ virDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot,
     virCheckDomainSnapshotReturn(snapshot, NULL);
     conn = snapshot->domain->conn;
 
-    if ((conn->flags & VIR_CONNECT_RO) && (flags & VIR_DOMAIN_XML_SECURE)) {
+    if ((conn->flags & VIR_CONNECT_RO) &&
+        (flags & VIR_DOMAIN_SNAPSHOT_XML_SECURE)) {
         virReportError(VIR_ERR_OPERATION_DENIED, "%s",
                        _("virDomainSnapshotGetXMLDesc with secure flag"));
         goto error;
index 9435f3c1cf3a1f30d95fe90404d258069c81bd5b..fe1b7801e9fc52e17f40ba8ebc7876601b27ca9e 100644 (file)
@@ -16247,7 +16247,7 @@ qemuDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot,
     virDomainSnapshotObjPtr snap = NULL;
     char uuidstr[VIR_UUID_STRING_BUFLEN];
 
-    virCheckFlags(VIR_DOMAIN_XML_SECURE, NULL);
+    virCheckFlags(VIR_DOMAIN_SNAPSHOT_XML_SECURE, NULL);
 
     if (!(vm = qemuDomObjFromSnapshot(snapshot)))
         return NULL;
index 42a87d418b690fe4932281a92d22b26e3d209e1c..60cc40e04ab4cb272785f9638fa9c74e8663022a 100644 (file)
@@ -4902,7 +4902,7 @@ enum remote_procedure {
      * @generate: both
      * @priority: high
      * @acl: domain:read
-     * @acl: domain:read_secure:VIR_DOMAIN_XML_SECURE
+     * @acl: domain:read_secure:VIR_DOMAIN_SNAPSHOT_XML_SECURE
      */
     REMOTE_PROC_DOMAIN_SNAPSHOT_GET_XML_DESC = 186,
 
index cde9e3d4173fd60c6297b83ea0796bbd2e0f4620..ce0df1f8e3018b456d921835ccf82dfe9e8521a4 100644 (file)
@@ -6197,7 +6197,7 @@ testDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot,
     char uuidstr[VIR_UUID_STRING_BUFLEN];
     testDriverPtr privconn = snapshot->domain->conn->privateData;
 
-    virCheckFlags(VIR_DOMAIN_XML_SECURE, NULL);
+    virCheckFlags(VIR_DOMAIN_SNAPSHOT_XML_SECURE, NULL);
 
     if (!(vm = testDomObjFromSnapshot(snapshot)))
         return NULL;
index f99ade82b657cdf3cb1df39a668a95047453af16..2d2eaf88a67b6015e0f3de8d818841a147d1edc2 100644 (file)
@@ -2273,7 +2273,7 @@ vzDomainSnapshotGetXMLDesc(virDomainSnapshotPtr snapshot, unsigned int flags)
     virDomainSnapshotObjListPtr snapshots = NULL;
     vzConnPtr privconn = snapshot->domain->conn->privateData;
 
-    virCheckFlags(VIR_DOMAIN_XML_SECURE, NULL);
+    virCheckFlags(VIR_DOMAIN_SNAPSHOT_XML_SECURE, NULL);
 
     if (!(dom = vzDomObjFromDomain(snapshot->domain)))
         return NULL;