Make Health Check work with new db and config
Change-Id: Ic4c9913b45e09add559adcae6c441b55ef356731
This commit is contained in:
parent
21cc07bed3
commit
bd745ff87e
@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
"""Base class for Compass Health Check."""
|
"""Base class for Compass Health Check."""
|
||||||
from compass.actions.health_check import utils as health_check_utils
|
from compass.actions.health_check import utils as health_check_utils
|
||||||
|
from compass.db.api import database
|
||||||
|
from compass.db import models
|
||||||
from compass.utils import setting_wrapper as setting
|
from compass.utils import setting_wrapper as setting
|
||||||
|
|
||||||
|
|
||||||
@ -25,6 +27,32 @@ class BaseCheck(object):
|
|||||||
self.code = 1
|
self.code = 1
|
||||||
self.messages = []
|
self.messages = []
|
||||||
self.dist, self.version, self.release = health_check_utils.get_dist()
|
self.dist, self.version, self.release = health_check_utils.get_dist()
|
||||||
|
self.os_installer = self._get_os_installer()
|
||||||
|
self.package_installer = self._get_package_installer()
|
||||||
|
|
||||||
|
def _get_os_installer(self):
|
||||||
|
database.init()
|
||||||
|
os_installer = {}
|
||||||
|
with database.session() as session:
|
||||||
|
installer = session.query(
|
||||||
|
models.OSInstaller
|
||||||
|
).first()
|
||||||
|
os_installer['name'] = health_check_utils.strip_name(
|
||||||
|
installer.name)
|
||||||
|
os_installer.update(installer.settings)
|
||||||
|
return os_installer
|
||||||
|
|
||||||
|
def _get_package_installer(self):
|
||||||
|
database.init()
|
||||||
|
package_installer = {}
|
||||||
|
with database.session() as session:
|
||||||
|
installer = session.query(
|
||||||
|
models.PackageInstaller
|
||||||
|
).first()
|
||||||
|
package_installer['name'] = health_check_utils.strip_name(
|
||||||
|
installer.name)
|
||||||
|
package_installer.update(installer.settings)
|
||||||
|
return package_installer
|
||||||
|
|
||||||
def _set_status(self, code, message):
|
def _set_status(self, code, message):
|
||||||
"""set status."""
|
"""set status."""
|
||||||
|
@ -36,12 +36,12 @@ class BootCheck(base.BaseCheck):
|
|||||||
status['celery'] = self._check_celery()
|
status['celery'] = self._check_celery()
|
||||||
status['dhcp'] = self._check_dhcp()
|
status['dhcp'] = self._check_dhcp()
|
||||||
status['dns'] = self._check_dns()
|
status['dns'] = self._check_dns()
|
||||||
# status['hds'] = self._check_hds()
|
status['hds'] = self._check_hds()
|
||||||
status['os_installer'] = self._check_os_installer()
|
status['os_installer'] = self._check_os_installer()
|
||||||
status['package_installer'] = self._check_package_installer()
|
status['package_installer'] = self._check_package_installer()
|
||||||
status['squid'] = self._check_squid()
|
status['squid'] = self._check_squid()
|
||||||
status['tftp'] = self._check_tftp()
|
status['tftp'] = self._check_tftp()
|
||||||
# status['other'] = self._check_misc()
|
status['other'] = self._check_misc()
|
||||||
|
|
||||||
return status
|
return status
|
||||||
|
|
||||||
|
@ -29,8 +29,7 @@ class DhcpCheck(base.BaseCheck):
|
|||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
"""do health check."""
|
"""do health check."""
|
||||||
installer = self.config.OS_INSTALLER
|
method_name = "self.check_" + self.os_installer['name'] + "_dhcp()"
|
||||||
method_name = "self.check_" + installer + "_dhcp()"
|
|
||||||
return eval(method_name)
|
return eval(method_name)
|
||||||
|
|
||||||
def check_cobbler_dhcp(self):
|
def check_cobbler_dhcp(self):
|
||||||
@ -38,10 +37,10 @@ class DhcpCheck(base.BaseCheck):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
remote = xmlrpclib.Server(
|
remote = xmlrpclib.Server(
|
||||||
self.config.COBBLER_INSTALLER_URL,
|
self.os_installer['url'],
|
||||||
allow_none=True)
|
allow_none=True)
|
||||||
remote.login(
|
remote.login(
|
||||||
*self.config.COBBLER_INSTALLER_TOKEN)
|
*self.os_installer['token'])
|
||||||
except Exception:
|
except Exception:
|
||||||
self._set_status(
|
self._set_status(
|
||||||
0,
|
0,
|
||||||
|
@ -28,18 +28,17 @@ class DnsCheck(base.BaseCheck):
|
|||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
"""do health check."""
|
"""do health check."""
|
||||||
installer = self.config.OS_INSTALLER
|
method_name = "self.check_" + self.os_installer['name'] + "_dns()"
|
||||||
method_name = "self.check_" + installer + "_dns()"
|
|
||||||
return eval(method_name)
|
return eval(method_name)
|
||||||
|
|
||||||
def check_cobbler_dns(self):
|
def check_cobbler_dns(self):
|
||||||
"""Checks if Cobbler has taken over DNS service."""
|
"""Checks if Cobbler has taken over DNS service."""
|
||||||
try:
|
try:
|
||||||
remote = xmlrpclib.Server(
|
remote = xmlrpclib.Server(
|
||||||
self.config.COBBLER_INSTALLER_URL,
|
self.os_installer['url'],
|
||||||
allow_none=True)
|
allow_none=True)
|
||||||
remote.login(
|
remote.login(
|
||||||
*self.config.COBBLER_INSTALLER_TOKEN)
|
*self.os_installer['token'])
|
||||||
except Exception:
|
except Exception:
|
||||||
self._set_status(0,
|
self._set_status(0,
|
||||||
"[%s]Error: Cannot login to Cobbler "
|
"[%s]Error: Cannot login to Cobbler "
|
||||||
|
@ -26,18 +26,17 @@ class OsInstallerCheck(base.BaseCheck):
|
|||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
"""do health check."""
|
"""do health check."""
|
||||||
installer = self.config.OS_INSTALLER
|
method_name = 'self.' + self.os_installer['name'] + '_check()'
|
||||||
method_name = 'self.' + installer + '_check()'
|
|
||||||
return eval(method_name)
|
return eval(method_name)
|
||||||
|
|
||||||
def cobbler_check(self):
|
def cobbler_check(self):
|
||||||
"""Runs cobbler check from xmlrpc client."""
|
"""Runs cobbler check from xmlrpc client."""
|
||||||
try:
|
try:
|
||||||
remote = xmlrpclib.Server(
|
remote = xmlrpclib.Server(
|
||||||
self.config.COBBLER_INSTALLER_URL,
|
self.os_installer['url'],
|
||||||
allow_none=True)
|
allow_none=True)
|
||||||
token = remote.login(
|
token = remote.login(
|
||||||
*self.config.COBBLER_INSTALLER_TOKEN)
|
*self.os_installer['token'])
|
||||||
except Exception:
|
except Exception:
|
||||||
self.code = 0
|
self.code = 0
|
||||||
self.messages.append(
|
self.messages.append(
|
||||||
|
@ -28,8 +28,7 @@ class PackageInstallerCheck(base.BaseCheck):
|
|||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
"""do health check."""
|
"""do health check."""
|
||||||
installer = self.config.PACKAGE_INSTALLER
|
method_name = "self." + self.package_installer['name'] + "_check()"
|
||||||
method_name = "self." + installer + "_check()"
|
|
||||||
return eval(method_name)
|
return eval(method_name)
|
||||||
|
|
||||||
def chef_check(self):
|
def chef_check(self):
|
||||||
|
@ -27,8 +27,7 @@ class TftpCheck(base.BaseCheck):
|
|||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
"""do health check."""
|
"""do health check."""
|
||||||
installer = self.config.OS_INSTALLER
|
method_name = "self.check_" + self.os_installer['name'] + "_tftp()"
|
||||||
method_name = "self.check_" + installer + "_tftp()"
|
|
||||||
return eval(method_name)
|
return eval(method_name)
|
||||||
|
|
||||||
def check_cobbler_tftp(self):
|
def check_cobbler_tftp(self):
|
||||||
@ -40,10 +39,10 @@ class TftpCheck(base.BaseCheck):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
remote = xmlrpclib.Server(
|
remote = xmlrpclib.Server(
|
||||||
self.config.COBBLER_INSTALLER_URL,
|
self.os_installer['name'],
|
||||||
allow_none=True)
|
allow_none=True)
|
||||||
remote.login(
|
remote.login(
|
||||||
*self.config.COBBLER_INSTALLER_TOKEN)
|
*self.os_installer['token'])
|
||||||
except Exception:
|
except Exception:
|
||||||
self._set_status(
|
self._set_status(
|
||||||
0,
|
0,
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
import commands
|
import commands
|
||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
def validate_setting(module, setting, param):
|
def validate_setting(module, setting, param):
|
||||||
@ -91,3 +92,23 @@ def check_chkconfig(service_name):
|
|||||||
break
|
break
|
||||||
|
|
||||||
return chk_on
|
return chk_on
|
||||||
|
|
||||||
|
|
||||||
|
def strip_name(name):
|
||||||
|
"""Reformats names."""
|
||||||
|
if not any([s in name for s in "(,),-,_".split(',')]):
|
||||||
|
return name
|
||||||
|
|
||||||
|
paren_regex = re.compile("(.*?)\s*\(")
|
||||||
|
dash_regex = re.compile("(.*?)\s*\-")
|
||||||
|
under_dash_regex = re.compile("(.*?)\s*\_")
|
||||||
|
|
||||||
|
r1 = paren_regex.match(name)
|
||||||
|
r2 = dash_regex.match(name)
|
||||||
|
r3 = under_dash_regex.match(name)
|
||||||
|
shortest = 'AVeryLongStringForDefualt'
|
||||||
|
for r in [r1, r2, r3]:
|
||||||
|
if r and len(r.group(1)) < len(shortest):
|
||||||
|
shortest = r.group(1)
|
||||||
|
|
||||||
|
return shortest
|
||||||
|
Loading…
Reference in New Issue
Block a user