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: