[PATCH 2/9] conf: Move virDomainGenerateMachineName to hypervisor/

Michal Privoznik mprivozn at redhat.com
Wed Mar 25 10:18:02 UTC 2020


The virDomainGenerateMachineName() function doesn't belong in
src/conf/ really, because it has nothing to do with domain XML
parsing. It landed there because of lack of better place in the
past. But now that we have src/hypervisor/ the function should
live there. At the same time, the function name is changed to
match new location.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 src/conf/domain_conf.c         | 72 ---------------------------------
 src/conf/domain_conf.h         |  7 ----
 src/hypervisor/domain_driver.c | 74 ++++++++++++++++++++++++++++++++++
 src/hypervisor/domain_driver.h |  7 ++++
 src/libvirt_private.syms       |  2 +-
 src/lxc/lxc_domain.c           |  3 +-
 src/qemu/qemu_domain.c         |  7 ++--
 tests/virsystemdtest.c         |  5 ++-
 8 files changed, 91 insertions(+), 86 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 27bc5a797b..239455ef58 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -62,7 +62,6 @@
 #include "virdomainsnapshotobjlist.h"
 #include "virdomaincheckpointobjlist.h"
 #include "virutil.h"
-#include "vircrypto.h"
 
 #define VIR_FROM_THIS VIR_FROM_DOMAIN
 
@@ -31032,77 +31031,6 @@ virDomainDiskSetBlockIOTune(virDomainDiskDefPtr disk,
     return 0;
 }
 
-#define HOSTNAME_CHARS \
-    "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-"
-
-static void
-virDomainMachineNameAppendValid(virBufferPtr buf,
-                                const char *name)
-{
-    bool skip = true;
-
-    for (; *name; name++) {
-        if (strlen(virBufferCurrentContent(buf)) >= 64)
-            break;
-
-        if (*name == '.' || *name == '-') {
-            if (!skip)
-                virBufferAddChar(buf, *name);
-            skip = true;
-            continue;
-        }
-
-        skip = false;
-
-        if (!strchr(HOSTNAME_CHARS, *name))
-            continue;
-
-        virBufferAddChar(buf, *name);
-    }
-
-    /* trailing dashes or dots are not allowed */
-    virBufferTrimChars(buf, "-.");
-}
-
-#undef HOSTNAME_CHARS
-
-char *
-virDomainGenerateMachineName(const char *drivername,
-                             const char *root,
-                             int id,
-                             const char *name,
-                             bool privileged)
-{
-    virBuffer buf = VIR_BUFFER_INITIALIZER;
-
-    virBufferAsprintf(&buf, "%s-", drivername);
-
-    if (root) {
-        g_autofree char *hash = NULL;
-
-        /* When two embed drivers start two domains with the same @name and @id
-         * we would generate a non-unique name. Include parts of hashed @root
-         * which guarantees uniqueness. The first 8 characters of SHA256 ought
-         * to be enough for anybody. */
-        if (virCryptoHashString(VIR_CRYPTO_HASH_SHA256, root, &hash) < 0)
-            return NULL;
-
-        virBufferAsprintf(&buf, "embed-%.8s-", hash);
-    } else if (!privileged) {
-        g_autofree char *username = NULL;
-        if (!(username = virGetUserName(geteuid()))) {
-            virBufferFreeAndReset(&buf);
-            return NULL;
-        }
-        virBufferAsprintf(&buf, "%s-", username);
-    }
-
-    virBufferAsprintf(&buf, "%d-", id);
-    virDomainMachineNameAppendValid(&buf, name);
-
-    return virBufferContentAndReset(&buf);
-}
-
 
 /**
  * virDomainNetTypeSharesHostView:
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 33875d942f..575290a6ac 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -3649,13 +3649,6 @@ virDomainGetBlkioParametersAssignFromDef(virDomainDefPtr def,
 int virDomainDiskSetBlockIOTune(virDomainDiskDefPtr disk,
                                 virDomainBlockIoTuneInfo *info);
 
-char *
-virDomainGenerateMachineName(const char *drivername,
-                             const char *root,
-                             int id,
-                             const char *name,
-                             bool privileged);
-
 bool
 virDomainNetTypeSharesHostView(const virDomainNetDef *net);
 
diff --git a/src/hypervisor/domain_driver.c b/src/hypervisor/domain_driver.c
index fc5b6eeefe..7bf0fb3f98 100644
--- a/src/hypervisor/domain_driver.c
+++ b/src/hypervisor/domain_driver.c
@@ -23,10 +23,84 @@
 #include "domain_driver.h"
 #include "viralloc.h"
 #include "virstring.h"
+#include "vircrypto.h"
+#include "virutil.h"
 
 #define VIR_FROM_THIS VIR_FROM_DOMAIN
 
 
+#define HOSTNAME_CHARS \
+    "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-"
+
+static void
+virDomainMachineNameAppendValid(virBufferPtr buf,
+                                const char *name)
+{
+    bool skip = true;
+
+    for (; *name; name++) {
+        if (strlen(virBufferCurrentContent(buf)) >= 64)
+            break;
+
+        if (*name == '.' || *name == '-') {
+            if (!skip)
+                virBufferAddChar(buf, *name);
+            skip = true;
+            continue;
+        }
+
+        skip = false;
+
+        if (!strchr(HOSTNAME_CHARS, *name))
+            continue;
+
+        virBufferAddChar(buf, *name);
+    }
+
+    /* trailing dashes or dots are not allowed */
+    virBufferTrimChars(buf, "-.");
+}
+
+#undef HOSTNAME_CHARS
+
+char *
+virDomainDriverGenerateMachineName(const char *drivername,
+                                   const char *root,
+                                   int id,
+                                   const char *name,
+                                   bool privileged)
+{
+    virBuffer buf = VIR_BUFFER_INITIALIZER;
+
+    virBufferAsprintf(&buf, "%s-", drivername);
+
+    if (root) {
+        g_autofree char *hash = NULL;
+
+        /* When two embed drivers start two domains with the same @name and @id
+         * we would generate a non-unique name. Include parts of hashed @root
+         * which guarantees uniqueness. The first 8 characters of SHA256 ought
+         * to be enough for anybody. */
+        if (virCryptoHashString(VIR_CRYPTO_HASH_SHA256, root, &hash) < 0)
+            return NULL;
+
+        virBufferAsprintf(&buf, "embed-%.8s-", hash);
+    } else if (!privileged) {
+        g_autofree char *username = NULL;
+        if (!(username = virGetUserName(geteuid()))) {
+            virBufferFreeAndReset(&buf);
+            return NULL;
+        }
+        virBufferAsprintf(&buf, "%s-", username);
+    }
+
+    virBufferAsprintf(&buf, "%d-", id);
+    virDomainMachineNameAppendValid(&buf, name);
+
+    return virBufferContentAndReset(&buf);
+}
+
+
 /* Modify dest_array to reflect all blkio device changes described in
  * src_array.  */
 int
diff --git a/src/hypervisor/domain_driver.h b/src/hypervisor/domain_driver.h
index b6d5e66bba..c52e37f038 100644
--- a/src/hypervisor/domain_driver.h
+++ b/src/hypervisor/domain_driver.h
@@ -22,6 +22,13 @@
 
 #include "domain_conf.h"
 
+char *
+virDomainDriverGenerateMachineName(const char *drivername,
+                                   const char *root,
+                                   int id,
+                                   const char *name,
+                                   bool privileged);
+
 int virDomainDriverMergeBlkioDevice(virBlkioDevicePtr *dest_array,
                                     size_t *dest_size,
                                     virBlkioDevicePtr src_array,
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 3f032c7963..69f278f6fb 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -406,7 +406,6 @@ virDomainFSTypeFromString;
 virDomainFSTypeToString;
 virDomainFSWrpolicyTypeFromString;
 virDomainFSWrpolicyTypeToString;
-virDomainGenerateMachineName;
 virDomainGetBlkioParametersAssignFromDef;
 virDomainGetFilesystemForTarget;
 virDomainGraphicsAuthConnectedTypeFromString;
@@ -1403,6 +1402,7 @@ virDomainCgroupSetupMemtune;
 
 
 # hypervisor/domain_driver.h
+virDomainDriverGenerateMachineName;
 virDomainDriverMergeBlkioDevice;
 virDomainDriverParseBlkioDeviceStr;
 virDomainDriverSetupPersistentDefBlkioParams;
diff --git a/src/lxc/lxc_domain.c b/src/lxc/lxc_domain.c
index ebd2c2b56e..59f803837a 100644
--- a/src/lxc/lxc_domain.c
+++ b/src/lxc/lxc_domain.c
@@ -31,6 +31,7 @@
 #include "virtime.h"
 #include "virsystemd.h"
 #include "virinitctl.h"
+#include "domain_driver.h"
 
 #define VIR_FROM_THIS VIR_FROM_LXC
 
@@ -406,7 +407,7 @@ virLXCDomainGetMachineName(virDomainDefPtr def, pid_t pid)
     }
 
     if (!ret)
-        ret = virDomainGenerateMachineName("lxc", NULL, def->id, def->name, true);
+        ret = virDomainDriverGenerateMachineName("lxc", NULL, def->id, def->name, true);
 
     return ret;
 }
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 2c9fb47d17..b921126e1c 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -44,6 +44,7 @@
 #include "virfile.h"
 #include "domain_addr.h"
 #include "domain_capabilities.h"
+#include "domain_driver.h"
 #include "domain_event.h"
 #include "virtime.h"
 #include "virnetdevopenvswitch.h"
@@ -16490,9 +16491,9 @@ qemuDomainGetMachineName(virDomainObjPtr vm)
     }
 
     if (!ret)
-        ret = virDomainGenerateMachineName("qemu", cfg->root,
-                                           vm->def->id, vm->def->name,
-                                           virQEMUDriverIsPrivileged(driver));
+        ret = virDomainDriverGenerateMachineName("qemu", cfg->root,
+                                                 vm->def->id, vm->def->name,
+                                                 virQEMUDriverIsPrivileged(driver));
 
     return ret;
 }
diff --git a/tests/virsystemdtest.c b/tests/virsystemdtest.c
index 050941dce8..e7dcdea8e9 100644
--- a/tests/virsystemdtest.c
+++ b/tests/virsystemdtest.c
@@ -34,6 +34,7 @@
 # include "virlog.h"
 # include "virmock.h"
 # include "rpc/virnetsocket.h"
+# include "domain_driver.h"
 # define VIR_FROM_THIS VIR_FROM_NONE
 
 VIR_LOG_INIT("tests.systemdtest");
@@ -414,8 +415,8 @@ testMachineName(const void *opaque)
     int ret = -1;
     char *actual = NULL;
 
-    if (!(actual = virDomainGenerateMachineName("qemu", data->root,
-                                                data->id, data->name, true)))
+    if (!(actual = virDomainDriverGenerateMachineName("qemu", data->root,
+                                                      data->id, data->name, true)))
         goto cleanup;
 
     if (STRNEQ(actual, data->expected)) {
-- 
2.24.1




More information about the libvir-list mailing list