[libvirt] [PATCH 07/12] migration: refactor: introduce params version of unmanaged

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Fri Oct 2 07:52:47 UTC 2015


Let's put main functionality into params version of virDomainMigrateUnmanaged
as a preparation step for merging it with virDomainMigratePeer2PeerParams.
virDomainMigrateUnmanaged then does nothing more then just adapting arguments.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy at virtuozzo.com>
---
 src/libvirt-domain.c |   98 ++++++++++++++++++++++++++++++++++----------------
 1 files changed, 67 insertions(+), 31 deletions(-)

diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
index 36db29c..3f2bb4a 100644
--- a/src/libvirt-domain.c
+++ b/src/libvirt-domain.c
@@ -3330,21 +3330,32 @@ virDomainMigrateCheckNotLocal(const char *dconnuri)
  * does not need to be involved at all, or even running.
  */
 static int
-virDomainMigrateUnmanaged(virDomainPtr domain,
-                          const char *xmlin,
-                          unsigned int flags,
-                          const char *dname,
-                          const char *dconnuri,
-                          const char *miguri,
-                          unsigned long long bandwidth)
+virDomainMigrateUnmanagedParams(virDomainPtr domain,
+                                const char *dconnuri,
+                                virTypedParameterPtr params,
+                                int nparams,
+                                unsigned int flags)
 {
     const char *uri = NULL;
+    const char *miguri = NULL;
+    const char *dname = NULL;
+    const char *xmlin = NULL;
+    unsigned long long bandwidth = 0;
 
-    VIR_DOMAIN_DEBUG(domain,
-                     "dconnuri=%s, xmlin=%s, dname=%s, migrui=%s, "
-                     "bandwidth=%llu, flags=%x",
-                     dconnuri, NULLSTR(xmlin), NULLSTR(dname), NULLSTR(miguri),
-                     bandwidth, flags);
+    VIR_DOMAIN_DEBUG(domain, "dconnuri=%s, params=%p, nparams=%d, flags=%x",
+                     dconnuri, params, nparams, flags);
+    VIR_TYPED_PARAMS_DEBUG(params, nparams);
+
+    if (virTypedParamsGetString(params, nparams,
+                                VIR_MIGRATE_PARAM_URI, &miguri) < 0 ||
+        virTypedParamsGetString(params, nparams,
+                                VIR_MIGRATE_PARAM_DEST_NAME, &dname) < 0 ||
+        virTypedParamsGetString(params, nparams,
+                                VIR_MIGRATE_PARAM_DEST_XML, &xmlin) < 0 ||
+        virTypedParamsGetULLong(params, nparams,
+                                VIR_MIGRATE_PARAM_BANDWIDTH, &bandwidth) < 0) {
+        return -1;
+    }
 
     if ((flags & VIR_MIGRATE_PEER2PEER) &&
         virDomainMigrateCheckNotLocal(dconnuri) < 0)
@@ -3414,6 +3425,46 @@ virDomainMigratePeer2PeerParams(virDomainPtr domain,
 }
 
 
+static int
+virDomainMigrateUnmanaged(virDomainPtr domain,
+                          const char *xmlin,
+                          unsigned int flags,
+                          const char *dname,
+                          const char *dconnuri,
+                          const char *miguri,
+                          unsigned long long bandwidth)
+{
+    int ret = -1;
+    virTypedParameterPtr params = NULL;
+    int nparams = 0;
+    int maxparams = 0;
+
+    if (miguri &&
+        virTypedParamsAddString(&params, &nparams, &maxparams,
+                                VIR_MIGRATE_PARAM_URI, miguri) < 0)
+        goto cleanup;
+    if (dname &&
+        virTypedParamsAddString(&params, &nparams, &maxparams,
+                                VIR_MIGRATE_PARAM_DEST_NAME, dname) < 0)
+        goto cleanup;
+    if (xmlin &&
+        virTypedParamsAddString(&params, &nparams, &maxparams,
+                                VIR_MIGRATE_PARAM_DEST_XML, xmlin) < 0)
+        goto cleanup;
+    if (virTypedParamsAddULLong(&params, &nparams, &maxparams,
+                                VIR_MIGRATE_PARAM_BANDWIDTH, bandwidth) < 0)
+        goto cleanup;
+
+    ret = virDomainMigrateUnmanagedParams(domain, dconnuri, params,
+                                          nparams, flags);
+
+ cleanup:
+    virTypedParamsFree(params, nparams);
+
+    return ret;
+}
+
+
 /**
  * virDomainMigrate:
  * @domain: a domain object
@@ -4380,10 +4431,6 @@ virDomainMigrateToURI3(virDomainPtr domain,
                                    VIR_MIGRATE_PARAM_DEST_NAME,
                                    VIR_MIGRATE_PARAM_DEST_XML,
                                    VIR_MIGRATE_PARAM_BANDWIDTH };
-    const char *uri = NULL;
-    const char *dname = NULL;
-    const char *dxml = NULL;
-    unsigned long long bandwidth = 0;
 
     VIR_DOMAIN_DEBUG(domain, "dconnuri=%s, params=%p, nparms=%u flags=%x",
                      NULLSTR(dconnuri), params, nparams, flags);
@@ -4402,17 +4449,6 @@ virDomainMigrateToURI3(virDomainPtr domain,
     compat = virTypedParamsCheck(params, nparams, compatParams,
                                  ARRAY_CARDINALITY(compatParams));
 
-    if (virTypedParamsGetString(params, nparams,
-                                VIR_MIGRATE_PARAM_URI, &uri) < 0 ||
-        virTypedParamsGetString(params, nparams,
-                                VIR_MIGRATE_PARAM_DEST_NAME, &dname) < 0 ||
-        virTypedParamsGetString(params, nparams,
-                                VIR_MIGRATE_PARAM_DEST_XML, &dxml) < 0 ||
-        virTypedParamsGetULLong(params, nparams,
-                                VIR_MIGRATE_PARAM_BANDWIDTH, &bandwidth) < 0) {
-        goto error;
-    }
-
     if (flags & VIR_MIGRATE_PEER2PEER) {
         if (!VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn,
                                       VIR_DRV_FEATURE_MIGRATION_P2P)) {
@@ -4430,8 +4466,8 @@ virDomainMigrateToURI3(virDomainPtr domain,
                 goto error;
         } else if (compat) {
             VIR_DEBUG("Using peer2peer migration");
-            if (virDomainMigrateUnmanaged(domain, dxml, flags, dname,
-                                          dconnuri, uri, bandwidth) < 0)
+            if (virDomainMigrateUnmanagedParams(domain, dconnuri, params,
+                                                nparams, flags) < 0)
                 goto error;
         } else {
             virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
@@ -4458,8 +4494,8 @@ virDomainMigrateToURI3(virDomainPtr domain,
         }
 
         VIR_DEBUG("Using direct migration");
-        if (virDomainMigrateUnmanaged(domain, dxml, flags,
-                                      dname, NULL, uri, bandwidth) < 0)
+        if (virDomainMigrateUnmanagedParams(domain, NULL, params,
+                                            nparams, flags) < 0)
             goto error;
     }
 
-- 
1.7.1




More information about the libvir-list mailing list