]> xenbits.xensource.com Git - libvirt.git/commitdiff
snapshot: remote protocol for getparent
authorEric Blake <eblake@redhat.com>
Sat, 24 Sep 2011 19:19:35 +0000 (13:19 -0600)
committerEric Blake <eblake@redhat.com>
Wed, 28 Sep 2011 15:54:57 +0000 (09:54 -0600)
Mostly straight-forward, although this is the first API that
returns a new snapshot based on a snapshot rather than a domain.

* src/remote/remote_protocol.x
(REMOTE_PROC_DOMAIN_SNAPSHOT_GET_PARENT): New rpc.
(remote_domain_snapshot_get_parent_args)
(remote_domain_snapshot_get_parent_ret): New structs.
* src/rpc/gendispatch.pl: Adjust generator.
* src/remote/remote_driver.c (remote_driver): Use it.
* src/remote_protocol-structs: Update.

src/remote/remote_driver.c
src/remote/remote_protocol.x
src/remote_protocol-structs
src/rpc/gendispatch.pl

index 1217d945007681adcb884526ff9854a34cb8c2b6..740dd7505b466faf81896d5717b14495424982b1 100644 (file)
@@ -4412,6 +4412,7 @@ static virDriver remote_driver = {
     .domainSnapshotListNames = remoteDomainSnapshotListNames, /* 0.8.0 */
     .domainSnapshotLookupByName = remoteDomainSnapshotLookupByName, /* 0.8.0 */
     .domainHasCurrentSnapshot = remoteDomainHasCurrentSnapshot, /* 0.8.0 */
+    .domainSnapshotGetParent = remoteDomainSnapshotGetParent, /* 0.9.7 */
     .domainSnapshotCurrent = remoteDomainSnapshotCurrent, /* 0.8.0 */
     .domainRevertToSnapshot = remoteDomainRevertToSnapshot, /* 0.8.0 */
     .domainSnapshotDelete = remoteDomainSnapshotDelete, /* 0.8.0 */
index 455e324182f1a13cce3be6e40e1f9e477e7fe908..3504e34e3d4f102c0711f8d670e2d216fd36a99d 100644 (file)
@@ -2081,6 +2081,15 @@ struct remote_domain_has_current_snapshot_ret {
     int result;
 };
 
+struct remote_domain_snapshot_get_parent_args {
+    remote_nonnull_domain_snapshot snap;
+    unsigned int flags;
+};
+
+struct remote_domain_snapshot_get_parent_ret {
+    remote_nonnull_domain_snapshot snap;
+};
+
 struct remote_domain_snapshot_current_args {
     remote_nonnull_domain dom;
     unsigned int flags;
@@ -2509,7 +2518,8 @@ enum remote_procedure {
 
     REMOTE_PROC_DOMAIN_EVENT_BLOCK_JOB = 241, /* skipgen skipgen */
     REMOTE_PROC_DOMAIN_MIGRATE_GET_MAX_SPEED = 242, /* autogen autogen */
-    REMOTE_PROC_DOMAIN_BLOCK_STATS_FLAGS = 243 /* skipgen skipgen */
+    REMOTE_PROC_DOMAIN_BLOCK_STATS_FLAGS = 243, /* skipgen skipgen */
+    REMOTE_PROC_DOMAIN_SNAPSHOT_GET_PARENT = 244 /* autogen autogen */
 
     /*
      * Notice how the entries are grouped in sets of 10 ?
index 810b19c9ea10546a81fac3dfe848f1b38b2f7c62..53705bfb865d6701e09c9ec68a9cb478b15e8941 100644 (file)
@@ -1568,6 +1568,13 @@ struct remote_domain_has_current_snapshot_args {
 struct remote_domain_has_current_snapshot_ret {
         int                        result;
 };
+struct remote_domain_snapshot_get_parent_args {
+        remote_nonnull_domain_snapshot snap;
+        u_int                      flags;
+};
+struct remote_domain_snapshot_get_parent_ret {
+        remote_nonnull_domain_snapshot snap;
+};
 struct remote_domain_snapshot_current_args {
         remote_nonnull_domain      dom;
         u_int                      flags;
@@ -1958,4 +1965,5 @@ enum remote_procedure {
         REMOTE_PROC_DOMAIN_EVENT_BLOCK_JOB = 241,
         REMOTE_PROC_DOMAIN_MIGRATE_GET_MAX_SPEED = 242,
         REMOTE_PROC_DOMAIN_BLOCK_STATS_FLAGS = 243,
+        REMOTE_PROC_DOMAIN_SNAPSHOT_GET_PARENT = 244,
 };
index fcd1a263fc7ddcf4055f683d3bf573dbda058101..039d785edd4ac4867c5979e7da0ec46b242b39d2 100755 (executable)
@@ -1273,7 +1273,9 @@ elsif ($opt_k) {
                         $single_ret_type = "int";
                     } else {
                         if ($name eq "domain_snapshot") {
-                            push(@ret_list, "rv = get_nonnull_$name(dom, ret.$arg_name);");
+                            my $dom = "$priv_src";
+                            $dom =~ s/->conn//;
+                            push(@ret_list, "rv = get_nonnull_$name($dom, ret.$arg_name);");
                         } else {
                             push(@ret_list, "rv = get_nonnull_$name($priv_src, ret.$arg_name);");
                         }