summaryrefslogtreecommitdiffstats
path: root/compass-tasks/actions/health_check/check_dns.py
diff options
context:
space:
mode:
Diffstat (limited to 'compass-tasks/actions/health_check/check_dns.py')
-rw-r--r--compass-tasks/actions/health_check/check_dns.py139
1 files changed, 0 insertions, 139 deletions
diff --git a/compass-tasks/actions/health_check/check_dns.py b/compass-tasks/actions/health_check/check_dns.py
deleted file mode 100644
index 843d7e2..0000000
--- a/compass-tasks/actions/health_check/check_dns.py
+++ /dev/null
@@ -1,139 +0,0 @@
-# Copyright 2014 Huawei Technologies Co. Ltd
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Health Check module for DNS service."""
-
-import commands
-import os
-import socket
-import xmlrpclib
-
-from compass.actions.health_check import base
-
-
-class DnsCheck(base.BaseCheck):
- """dns health check class."""
- NAME = "DNS Check"
-
- def run(self):
- """do health check."""
- method_name = "self.check_" + self.os_installer['name'] + "_dns()"
- return eval(method_name)
-
- def check_cobbler_dns(self):
- """Checks if Cobbler has taken over DNS service."""
- try:
- remote = xmlrpclib.Server(
- self.os_installer['cobbler_url'],
- allow_none=True)
- credentials = self.os_installer['credentials']
- remote.login(
- credentials['username'], credentials['password'])
- except Exception:
- self._set_status(0,
- "[%s]Error: Cannot login to Cobbler "
- "with the tokens provided in the config file"
- % self.NAME)
- return (self.code, self.messages)
-
- cobbler_settings = remote.get_settings()
- if cobbler_settings['manage_dns'] == 0:
- self.messages.append('[DNS]Info: DNS is not managed by Compass')
- return (0, self.messages)
- self.check_cobbler_dns_template()
- print "[Done]"
- self.check_dns_service()
- print "[Done]"
- if self.code == 1:
- self.messages.append(
- "[%s]Info: DNS health check has complated. "
- "No problems found, all systems go." % self.NAME)
- return (self.code, self.messages)
-
- def check_cobbler_dns_template(self):
- """Validates Cobbler's DNS template file."""
-
- print "Checking DNS template......",
- if os.path.exists("/etc/cobbler/named.template"):
- var_map = {
- "match_port": False,
- "match_allow_query": False,
- }
- named_template = open("/etc/cobbler/named.template")
- host_ip = socket.gethostbyname(socket.gethostname())
- missing_query = []
- for line in named_template.readlines():
- if "listen-on port 53" in line and host_ip in line:
- var_map["match_port"] = True
-
- if "allow-query" in line:
- for subnet in ["127.0.0.0/8"]:
- if subnet not in line:
- missing_query.append(subnet)
-
- named_template.close()
-
- if var_map["match_port"] is False:
- self.messages.append(
- "[%s]Error: named service port "
- "and/or IP is misconfigured in "
- "/etc/cobbler/named.template" % self.NAME)
-
- if len(missing_query) != 0:
- self.messages.append(
- "[%s]Error: Missing allow_query values in "
- "/etc/cobbler/named.template:%s" % (
- self.NAME,
- ', '.join(subnet for subnet in missing_query)))
- else:
- var_map["match_allow_query"] = True
-
- fails = []
- for var in var_map.keys():
- if var_map[var] is False:
- fails.append(var)
-
- if len(fails) != 0:
- self._set_status(
- 0,
- "[%s]Info: DNS template failed components: "
- "%s" % (
- self.NAME,
- ' '.join(failed for failed in fails)))
-
- else:
- self._set_status(
- 0,
- "[%s]Error: named template file doesn't exist, "
- "health check failed." % self.NAME)
-
- return True
-
- def check_dns_service(self):
- """Checks if DNS is running on port 53."""
-
- print "Checking DNS service......",
- if 'named' not in commands.getoutput('ps -ef'):
- self._set_status(
- 0,
- "[%s]Error: named service does not seem to be "
- "running" % self.NAME)
-
- if socket.getservbyport(53) != 'domain':
- self._set_status(
- 0,
- "[%s]Error: domain service is not listening on port "
- "53" % self.NAME)
-
- return None