This is an automated email from the ASF dual-hosted git repository.

dahn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/main by this push:
     new 833d1b45239 cloudstack-setup-agent: mask libvirt non-monolithic 
services (#7114)
833d1b45239 is described below

commit 833d1b45239bc9d02445294954b88a508438ed4a
Author: Rohit Yadav <[email protected]>
AuthorDate: Tue Jan 24 19:55:38 2023 +0530

    cloudstack-setup-agent: mask libvirt non-monolithic services (#7114)
    
    This masks sockets such as virtqemud.socket virtqemud-ro.socket
    virtqemud-admin.socket, and services virtqemud virtnetworkd virtstoraged
    that block libvirtd to be used a monolithic service. Useful for both EL9
    and existing Ubuntu 22.04, and newer distros.
    
    Signed-off-by: Rohit Yadav <[email protected]>
    Co-authored-by: dahn <[email protected]>
---
 python/lib/cloudutils/serviceConfig.py | 49 +++++++++++++++++++++++-----------
 python/lib/cloudutils/syscfg.py        | 42 ++++++++++++++---------------
 python/lib/cloudutils/utilities.py     |  4 +++
 3 files changed, 59 insertions(+), 36 deletions(-)

diff --git a/python/lib/cloudutils/serviceConfig.py 
b/python/lib/cloudutils/serviceConfig.py
index c6e9dca923a..4075b9e8602 100755
--- a/python/lib/cloudutils/serviceConfig.py
+++ b/python/lib/cloudutils/serviceConfig.py
@@ -617,11 +617,20 @@ class libvirtConfigRedhat(serviceCfgBase):
             cfo.addEntry("LIBVIRTD_ARGS", "-l")
             cfo.save()
             if os.path.exists("/lib/systemd/system/libvirtd.socket"):
-                bash("/bin/systemctl mask libvirtd.socket");
-                bash("/bin/systemctl mask libvirtd-ro.socket");
-                bash("/bin/systemctl mask libvirtd-admin.socket");
-                bash("/bin/systemctl mask libvirtd-tls.socket");
-                bash("/bin/systemctl mask libvirtd-tcp.socket");
+                bash("/bin/systemctl mask \
+                    libvirtd.socket \
+                    libvirtd-ro.socket \
+                    libvirtd-admin.socket \
+                    libvirtd-tls.socket \
+                    libvirtd-tcp.socket");
+            if os.path.exists("/lib/systemd/system/virtqemud.socket"):
+                bash("/bin/systemctl mask \
+                    virtqemud.socket \
+                    virtqemud-ro.socket \
+                    virtqemud-admin.socket \
+                    virtqemud \
+                    virtnetworkd \
+                    virtstoraged");
 
             filename = "/etc/libvirt/qemu.conf"
 
@@ -650,11 +659,12 @@ class libvirtConfigSUSE(serviceCfgBase):
             configureLibvirtConfig(self.syscfg.env.secure, self)
 
             if os.path.exists("/usr/lib/systemd/system/libvirtd.socket"):
-                bash("/bin/systemctl mask libvirtd.socket");
-                bash("/bin/systemctl mask libvirtd-ro.socket");
-                bash("/bin/systemctl mask libvirtd-admin.socket");
-                bash("/bin/systemctl mask libvirtd-tls.socket");
-                bash("/bin/systemctl mask libvirtd-tcp.socket");
+                bash("/bin/systemctl mask \
+                    libvirtd.socket \
+                    libvirtd-ro.socket \
+                    libvirtd-admin.socket \
+                    libvirtd-tls.socket \
+                    libvirtd-tcp.socket");
 
             cfo = configFileOps("/etc/sysconfig/libvirtd", self)
             cfo.addEntry("LIBVIRTD_ARGS", "-l")
@@ -694,11 +704,20 @@ class libvirtConfigUbuntu(serviceCfgBase):
             cfo = configFileOps("/etc/default/libvirtd", self)
             cfo.replace_or_add_line("libvirtd_opts=","libvirtd_opts='-l'")
             if os.path.exists("/lib/systemd/system/libvirtd.socket"):
-                bash("/bin/systemctl mask libvirtd.socket");
-                bash("/bin/systemctl mask libvirtd-ro.socket");
-                bash("/bin/systemctl mask libvirtd-admin.socket");
-                bash("/bin/systemctl mask libvirtd-tls.socket");
-                bash("/bin/systemctl mask libvirtd-tcp.socket");
+                bash("/bin/systemctl mask \
+                    libvirtd.socket \
+                    libvirtd-ro.socket \
+                    libvirtd-admin.socket \
+                    libvirtd-tls.socket \
+                    libvirtd-tcp.socket");
+            if os.path.exists("/lib/systemd/system/virtqemud.socket"):
+                bash("/bin/systemctl mask \
+                    virtqemud.socket \
+                    virtqemud-ro.socket \
+                    virtqemud-admin.socket \
+                    virtqemud \
+                    virtnetworkd \
+                    virtstoraged");
 
     def config(self):
         try:
diff --git a/python/lib/cloudutils/syscfg.py b/python/lib/cloudutils/syscfg.py
index d53d392c88c..19032ce4aff 100755
--- a/python/lib/cloudutils/syscfg.py
+++ b/python/lib/cloudutils/syscfg.py
@@ -37,14 +37,14 @@ class sysConfigAgentFactory:
         distribution = glbEnv.distribution.getVersion()
         if distribution == "Ubuntu":
             return sysConfigAgentUbuntu(glbEnv)
-        elif distribution == "Fedora" or distribution == "RHEL6":
-            return sysConfigRedhat6(glbEnv)
         elif distribution == "CentOS" or distribution == "RHEL5":
-            return sysConfigRedhat5(glbEnv)
+            return sysConfigEL5(glbEnv)
+        elif distribution == "Fedora" or distribution == "RHEL6":
+            return sysConfigEL6(glbEnv)
         elif distribution == "RHEL7":
-            return sysConfigRedhat7(glbEnv)
-        elif distribution == "RHEL8":
-            return sysConfigRedhat8(glbEnv)
+            return sysConfigEL7(glbEnv)
+        elif distribution in ["RHEL8", "RHEL9"]:
+            return sysConfigEL(glbEnv)
         elif distribution == "SUSE":
             return sysConfigSUSE(glbEnv)
         else:
@@ -151,10 +151,10 @@ class sysConfigAgentRedhat7Base(sysConfigAgent):
         self.svo = serviceOpsRedhat7Later()
         super(sysConfigAgentRedhat7Base, self).__init__(env)
 
-class sysConfigAgentRedhat8Base(sysConfigAgent):
+class sysConfigAgentELBase(sysConfigAgent):
     def __init__(self, env):
         self.svo = serviceOpsRedhat7Later()
-        super(sysConfigAgentRedhat8Base, self).__init__(env)
+        super(sysConfigAgentELBase, self).__init__(env)
 
 class sysConfigAgentSUSE(sysConfigAgent):
     def __init__(self, env):
@@ -174,34 +174,34 @@ class sysConfigAgentUbuntu(sysConfigAgent):
                          nfsConfig(self),
                          cloudAgentConfig(self)]
 
-#it covers RHEL6/Fedora13/Fedora14
-class sysConfigRedhat6(sysConfigAgentRedhatBase):
+#It covers RHEL5/CentOS5, the mainly difference is that there is no cgroup
+class sysConfigEL5(sysConfigAgentRedhatBase):
     def __init__(self, glbEnv):
-        super(sysConfigRedhat6, self).__init__(glbEnv)
+        super(sysConfigEL5, self).__init__(glbEnv)
         self.services = [hostConfig(self),
-                         cgroupConfig(self),
                          securityPolicyConfigRedhat(self),
                          networkConfigRedhat(self),
                          libvirtConfigRedhat(self),
                          firewallConfigAgent(self),
-                         nfsConfig(self),
                          cloudAgentConfig(self)]
 
-#It covers RHEL5/CentOS5, the mainly difference is that there is no cgroup
-class sysConfigRedhat5(sysConfigAgentRedhatBase):
+#it covers RHEL6/Fedora13/Fedora14
+class sysConfigEL6(sysConfigAgentRedhatBase):
     def __init__(self, glbEnv):
-        super(sysConfigRedhat5, self).__init__(glbEnv)
+        super(sysConfigEL6, self).__init__(glbEnv)
         self.services = [hostConfig(self),
+                         cgroupConfig(self),
                          securityPolicyConfigRedhat(self),
                          networkConfigRedhat(self),
                          libvirtConfigRedhat(self),
                          firewallConfigAgent(self),
+                         nfsConfig(self),
                          cloudAgentConfig(self)]
 
 #it covers RHEL7
-class sysConfigRedhat7(sysConfigAgentRedhat7Base):
+class sysConfigEL7(sysConfigAgentRedhat7Base):
     def __init__(self, glbEnv):
-        super(sysConfigRedhat7, self).__init__(glbEnv)
+        super(sysConfigEL7, self).__init__(glbEnv)
         self.services = [hostConfig(self),
                          securityPolicyConfigRedhat(self),
                          networkConfigRedhat(self),
@@ -210,10 +210,10 @@ class sysConfigRedhat7(sysConfigAgentRedhat7Base):
                          nfsConfig(self),
                          cloudAgentConfig(self)]
 
-#it covers RHEL8
-class sysConfigRedhat8(sysConfigAgentRedhat8Base):
+#it covers RHEL8 and later
+class sysConfigEL(sysConfigAgentELBase):
     def __init__(self, glbEnv):
-        super(sysConfigRedhat8, self).__init__(glbEnv)
+        super(sysConfigEL, self).__init__(glbEnv)
         self.services = [hostConfig(self),
                          securityPolicyConfigRedhat(self),
                          networkConfigRedhat(self),
diff --git a/python/lib/cloudutils/utilities.py 
b/python/lib/cloudutils/utilities.py
index a0167461a30..5a6114f1011 100755
--- a/python/lib/cloudutils/utilities.py
+++ b/python/lib/cloudutils/utilities.py
@@ -120,6 +120,10 @@ class Distribution:
                 version.find("CentOS Linux release 8") != -1 or 
version.find("CentOS release 8.") != -1 or
                 version.find("Linux release 8") != -1):
                 self.distro = "RHEL8"
+            elif (version.find("Red Hat Enterprise Linux Server release 9") != 
-1 or version.find("Scientific Linux release 9") != -1 or
+                version.find("Red Hat Enterprise Linux release 9") != -1 or 
version.find("Linux release 9.") != -1 or
+                version.find("Linux release 9") != -1):
+                self.distro = "RHEL9"
             elif version.find("CentOS") != -1:
                 self.distro = "CentOS"
             else:

Reply via email to