diff --git a/python/lib/cloudutils/serviceConfig.py b/python/lib/cloudutils/serviceConfig.py index 55b7cc2a952..b9ee7d55153 100755 --- a/python/lib/cloudutils/serviceConfig.py +++ b/python/lib/cloudutils/serviceConfig.py @@ -495,6 +495,27 @@ class nfsConfig(serviceCfgBase): logging.debug(formatExceptionInfo()) return False +class hostConfig(serviceCfgBase): + def __init__(self, syscfg): + super(hostConfig, self).__init__(syscfg) + self.serviceName = "Host" + + def config(self): + try: + cfo = configFileOps("/etc/cloudstack/agent/agent.properties", self) + reservedMemory = float(cfo.getEntry("host.reserved.mem.mb").strip() or 1024) + totalMemory = float(bash("awk '/MemTotal/ { printf \"%.3f \\n\", $2/1024 }' /proc/meminfo").getStdout().strip()) + if totalMemory < reservedMemory : + raise CloudRuntimeException("CloudStack requires more than %d MB memory since %d MB is reserved" %(reservedMemory, reservedMemory)) + + if int(bash('ip a | grep "^\\w" | grep -iv "^lo" | wc -l').getStdout()) < 1 : + raise CloudRuntimeException("CloudStack requires at least a single NIC") + + return True + except Exception as e: + logging.debug(e) + return False + class securityPolicyConfigUbuntu(serviceCfgBase): def __init__(self, syscfg): super(securityPolicyConfigUbuntu, self).__init__(syscfg) diff --git a/python/lib/cloudutils/syscfg.py b/python/lib/cloudutils/syscfg.py index 2c96e10e83b..64fffadbebb 100755 --- a/python/lib/cloudutils/syscfg.py +++ b/python/lib/cloudutils/syscfg.py @@ -166,7 +166,8 @@ class sysConfigAgentUbuntu(sysConfigAgent): super(sysConfigAgentUbuntu, self).__init__(glbEnv) self.svo = serviceOpsUbuntu() - self.services = [securityPolicyConfigUbuntu(self), + self.services = [hostConfig(self), + securityPolicyConfigUbuntu(self), networkConfigUbuntu(self), libvirtConfigUbuntu(self), firewallConfigUbuntu(self), @@ -177,7 +178,8 @@ class sysConfigAgentUbuntu(sysConfigAgent): class sysConfigRedhat6(sysConfigAgentRedhatBase): def __init__(self, glbEnv): super(sysConfigRedhat6, self).__init__(glbEnv) - self.services = [cgroupConfig(self), + self.services = [hostConfig(self), + cgroupConfig(self), securityPolicyConfigRedhat(self), networkConfigRedhat(self), libvirtConfigRedhat(self), @@ -189,7 +191,7 @@ class sysConfigRedhat6(sysConfigAgentRedhatBase): class sysConfigRedhat5(sysConfigAgentRedhatBase): def __init__(self, glbEnv): super(sysConfigRedhat5, self).__init__(glbEnv) - self.services = [ + self.services = [hostConfig(self), securityPolicyConfigRedhat(self), networkConfigRedhat(self), libvirtConfigRedhat(self), @@ -200,7 +202,8 @@ class sysConfigRedhat5(sysConfigAgentRedhatBase): class sysConfigRedhat7(sysConfigAgentRedhat7Base): def __init__(self, glbEnv): super(sysConfigRedhat7, self).__init__(glbEnv) - self.services = [securityPolicyConfigRedhat(self), + self.services = [hostConfig(self), + securityPolicyConfigRedhat(self), networkConfigRedhat(self), libvirtConfigRedhat(self), firewallConfigAgent(self), @@ -211,7 +214,8 @@ class sysConfigRedhat7(sysConfigAgentRedhat7Base): class sysConfigRedhat8(sysConfigAgentRedhat8Base): def __init__(self, glbEnv): super(sysConfigRedhat8, self).__init__(glbEnv) - self.services = [securityPolicyConfigRedhat(self), + self.services = [hostConfig(self), + securityPolicyConfigRedhat(self), networkConfigRedhat(self), libvirtConfigRedhat(self), firewallConfigAgent(self), @@ -221,7 +225,8 @@ class sysConfigRedhat8(sysConfigAgentRedhat8Base): class sysConfigSUSE(sysConfigAgentSUSE): def __init__(self, glbEnv): super(sysConfigSUSE, self).__init__(glbEnv) - self.services = [securityPolicyConfigSUSE(self), + self.services = [hostConfig(self), + securityPolicyConfigSUSE(self), networkConfigSUSE(self), libvirtConfigSUSE(self), firewallConfigAgent(self),