[libvirt] [PREPOST 12/17] src/xenxs:Refactor virtual time config options formating code

David Kiarie davidkiarie4 at gmail.com
Thu Jul 10 13:43:06 UTC 2014


From: Kiarie Kahurani <davidkiarie4 at gmail.com>

Introduce function
 xenFormatXMTimeOffset(......)
which formats virtual time config

signed-off-by:David Kiarie<davidkiarie4 at gmail.com>
---
 src/xenxs/xen_xm.c | 149 ++++++++++++++++++++++++++++-------------------------
 1 file changed, 78 insertions(+), 71 deletions(-)

diff --git a/src/xenxs/xen_xm.c b/src/xenxs/xen_xm.c
index a907252..c91fa73 100644
--- a/src/xenxs/xen_xm.c
+++ b/src/xenxs/xen_xm.c
@@ -1634,12 +1634,88 @@ static int xenFormatXMMem(virConfPtr conf, virDomainDefPtr def)
 
     return 0;
 }
+static int xenFormatXMTimeOffset(virConfPtr conf, virDomainDefPtr def,
+                                 int xendConfigVersion)
+{
+    int vmlocaltime;
+    if (xendConfigVersion < XEND_CONFIG_VERSION_3_1_0) {
+        /* <3.1: UTC and LOCALTIME */
+        switch (def->clock.offset) {
+        case VIR_DOMAIN_CLOCK_OFFSET_UTC:
+            vmlocaltime = 0;
+            break;
+        case VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME:
+            vmlocaltime = 1;
+            break;
+        default:
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                           _("unsupported clock offset='%s'"),
+                           virDomainClockOffsetTypeToString(def->clock.offset));
+            return -1;
+        }
+    } else {
+        if (STREQ(def->os.type, "hvm")) {
+            /* >=3.1 HV: VARIABLE */
+            int rtc_timeoffset;
+            switch (def->clock.offset) {
+            case VIR_DOMAIN_CLOCK_OFFSET_VARIABLE:
+                vmlocaltime = (int)def->clock.data.variable.basis;
+                rtc_timeoffset = def->clock.data.variable.adjustment;
+                break;
+            case VIR_DOMAIN_CLOCK_OFFSET_UTC:
+                if (def->clock.data.utc_reset) {
+                    virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                                   _("unsupported clock adjustment='reset'"));
+                    return -1;
+                }
+                vmlocaltime = 0;
+                rtc_timeoffset = 0;
+                break;
+            case VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME:
+                if (def->clock.data.utc_reset) {
+                    virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                                   _("unsupported clock adjustment='reset'"));
+                    return -1;
+                }
+                vmlocaltime = 1;
+                rtc_timeoffset = 0;
+                break;
+            default:
+                virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                               _("unsupported clock offset='%s'"),
+                               virDomainClockOffsetTypeToString(def->clock.offset));
+                return -1;
+            }
+            if (xenXMConfigSetInt(conf, "rtc_timeoffset", rtc_timeoffset) < 0)
+                return -1;
+        } else {
+            /* >=3.1 PV: UTC and LOCALTIME */
+            switch (def->clock.offset) {
+            case VIR_DOMAIN_CLOCK_OFFSET_UTC:
+                vmlocaltime = 0;
+                break;
+            case VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME:
+                vmlocaltime = 1;
+                break;
+            default:
+                virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                               _("unsupported clock offset='%s'"),
+                               virDomainClockOffsetTypeToString(def->clock.offset));
+                return -1;
+            }
+        } /* !hvm */
+    }
+    if (xenXMConfigSetInt(conf, "localtime", vmlocaltime) < 0)
+        return -1;
+
+    return 0;
+}
 virConfPtr xenFormatXM(virConnectPtr conn,
                                    virDomainDefPtr def,
                                    int xendConfigVersion)
 {
     virConfPtr conf = NULL;
-    int hvm = 0, vmlocaltime = 0;
+    int hvm = 0;
     size_t i;
     char *cpus = NULL;
     const char *lifecycle;
@@ -1778,78 +1854,9 @@ virConfPtr xenFormatXM(virConnectPtr conn,
             goto cleanup;
     } /* !hvm */
 
-
-    if (xendConfigVersion < XEND_CONFIG_VERSION_3_1_0) {
-        /* <3.1: UTC and LOCALTIME */
-        switch (def->clock.offset) {
-        case VIR_DOMAIN_CLOCK_OFFSET_UTC:
-            vmlocaltime = 0;
-            break;
-        case VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME:
-            vmlocaltime = 1;
-            break;
-        default:
-            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                           _("unsupported clock offset='%s'"),
-                           virDomainClockOffsetTypeToString(def->clock.offset));
-            goto cleanup;
-        }
-    } else {
-        if (hvm) {
-            /* >=3.1 HV: VARIABLE */
-            int rtc_timeoffset;
-            switch (def->clock.offset) {
-            case VIR_DOMAIN_CLOCK_OFFSET_VARIABLE:
-                vmlocaltime = (int)def->clock.data.variable.basis;
-                rtc_timeoffset = def->clock.data.variable.adjustment;
-                break;
-            case VIR_DOMAIN_CLOCK_OFFSET_UTC:
-                if (def->clock.data.utc_reset) {
-                    virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                                   _("unsupported clock adjustment='reset'"));
-                    goto cleanup;
-                }
-                vmlocaltime = 0;
-                rtc_timeoffset = 0;
-                break;
-            case VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME:
-                if (def->clock.data.utc_reset) {
-                    virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                                   _("unsupported clock adjustment='reset'"));
-                    goto cleanup;
-                }
-                vmlocaltime = 1;
-                rtc_timeoffset = 0;
-                break;
-            default:
-                virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                               _("unsupported clock offset='%s'"),
-                               virDomainClockOffsetTypeToString(def->clock.offset));
-                goto cleanup;
-            }
-            if (xenXMConfigSetInt(conf, "rtc_timeoffset", rtc_timeoffset) < 0)
-                goto cleanup;
-        } else {
-            /* >=3.1 PV: UTC and LOCALTIME */
-            switch (def->clock.offset) {
-            case VIR_DOMAIN_CLOCK_OFFSET_UTC:
-                vmlocaltime = 0;
-                break;
-            case VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME:
-                vmlocaltime = 1;
-                break;
-            default:
-                virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                               _("unsupported clock offset='%s'"),
-                               virDomainClockOffsetTypeToString(def->clock.offset));
-                goto cleanup;
-            }
-        } /* !hvm */
-    }
-    if (xenXMConfigSetInt(conf, "localtime", vmlocaltime) < 0)
+    if (xenFormatXMTimeOffset(conf, def, xendConfigVersion) < 0)
         goto cleanup;
 
-
     if (!(lifecycle = virDomainLifecycleTypeToString(def->onPoweroff))) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("unexpected lifecycle action %d"), def->onPoweroff);
-- 
1.8.4.5




More information about the libvir-list mailing list