Skip to content

Commit f0eac35

Browse files
authored
kvm: Add check if host meets the minimum requirements (apache#5369)
* kvm: Add check if host meets min req * Fix typo * Update serviceConfig.py * Remove obsessive checks * Update error message
1 parent 981dac7 commit f0eac35

File tree

2 files changed

+32
-6
lines changed

2 files changed

+32
-6
lines changed

python/lib/cloudutils/serviceConfig.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,27 @@ def config(self):
495495
logging.debug(formatExceptionInfo())
496496
return False
497497

498+
class hostConfig(serviceCfgBase):
499+
def __init__(self, syscfg):
500+
super(hostConfig, self).__init__(syscfg)
501+
self.serviceName = "Host"
502+
503+
def config(self):
504+
try:
505+
cfo = configFileOps("/etc/cloudstack/agent/agent.properties", self)
506+
reservedMemory = float(cfo.getEntry("host.reserved.mem.mb").strip() or 1024)
507+
totalMemory = float(bash("awk '/MemTotal/ { printf \"%.3f \\n\", $2/1024 }' /proc/meminfo").getStdout().strip())
508+
if totalMemory < reservedMemory :
509+
raise CloudRuntimeException("CloudStack requires more than %d MB memory since %d MB is reserved" %(reservedMemory, reservedMemory))
510+
511+
if int(bash('ip a | grep "^\\w" | grep -iv "^lo" | wc -l').getStdout()) < 1 :
512+
raise CloudRuntimeException("CloudStack requires at least a single NIC")
513+
514+
return True
515+
except Exception as e:
516+
logging.debug(e)
517+
return False
518+
498519
class securityPolicyConfigUbuntu(serviceCfgBase):
499520
def __init__(self, syscfg):
500521
super(securityPolicyConfigUbuntu, self).__init__(syscfg)

python/lib/cloudutils/syscfg.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,8 @@ def __init__(self, glbEnv):
166166
super(sysConfigAgentUbuntu, self).__init__(glbEnv)
167167
self.svo = serviceOpsUbuntu()
168168

169-
self.services = [securityPolicyConfigUbuntu(self),
169+
self.services = [hostConfig(self),
170+
securityPolicyConfigUbuntu(self),
170171
networkConfigUbuntu(self),
171172
libvirtConfigUbuntu(self),
172173
firewallConfigUbuntu(self),
@@ -177,7 +178,8 @@ def __init__(self, glbEnv):
177178
class sysConfigRedhat6(sysConfigAgentRedhatBase):
178179
def __init__(self, glbEnv):
179180
super(sysConfigRedhat6, self).__init__(glbEnv)
180-
self.services = [cgroupConfig(self),
181+
self.services = [hostConfig(self),
182+
cgroupConfig(self),
181183
securityPolicyConfigRedhat(self),
182184
networkConfigRedhat(self),
183185
libvirtConfigRedhat(self),
@@ -189,7 +191,7 @@ def __init__(self, glbEnv):
189191
class sysConfigRedhat5(sysConfigAgentRedhatBase):
190192
def __init__(self, glbEnv):
191193
super(sysConfigRedhat5, self).__init__(glbEnv)
192-
self.services = [
194+
self.services = [hostConfig(self),
193195
securityPolicyConfigRedhat(self),
194196
networkConfigRedhat(self),
195197
libvirtConfigRedhat(self),
@@ -200,7 +202,8 @@ def __init__(self, glbEnv):
200202
class sysConfigRedhat7(sysConfigAgentRedhat7Base):
201203
def __init__(self, glbEnv):
202204
super(sysConfigRedhat7, self).__init__(glbEnv)
203-
self.services = [securityPolicyConfigRedhat(self),
205+
self.services = [hostConfig(self),
206+
securityPolicyConfigRedhat(self),
204207
networkConfigRedhat(self),
205208
libvirtConfigRedhat(self),
206209
firewallConfigAgent(self),
@@ -211,7 +214,8 @@ def __init__(self, glbEnv):
211214
class sysConfigRedhat8(sysConfigAgentRedhat8Base):
212215
def __init__(self, glbEnv):
213216
super(sysConfigRedhat8, self).__init__(glbEnv)
214-
self.services = [securityPolicyConfigRedhat(self),
217+
self.services = [hostConfig(self),
218+
securityPolicyConfigRedhat(self),
215219
networkConfigRedhat(self),
216220
libvirtConfigRedhat(self),
217221
firewallConfigAgent(self),
@@ -221,7 +225,8 @@ def __init__(self, glbEnv):
221225
class sysConfigSUSE(sysConfigAgentSUSE):
222226
def __init__(self, glbEnv):
223227
super(sysConfigSUSE, self).__init__(glbEnv)
224-
self.services = [securityPolicyConfigSUSE(self),
228+
self.services = [hostConfig(self),
229+
securityPolicyConfigSUSE(self),
225230
networkConfigSUSE(self),
226231
libvirtConfigSUSE(self),
227232
firewallConfigAgent(self),

0 commit comments

Comments
 (0)