summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xplugins/discovery.py10
-rwxr-xr-xplugins/server_utils.py9
-rw-r--r--tests/test_discovery.py19
3 files changed, 38 insertions, 0 deletions
diff --git a/plugins/discovery.py b/plugins/discovery.py
index b30e6ba..1ce4679 100755
--- a/plugins/discovery.py
+++ b/plugins/discovery.py
@@ -498,6 +498,15 @@ def _findDuplicateHost(hosts, clusterName):
return host.get('hostname')
+# Retain the old hostnames by searching through the host uuid
+def replaceHostNamesWithCurrentName(hosts):
+ hostDict = server_utils.getUuidToHostConfigDict()
+ for host in hosts:
+ configuredHost = hostDict.get(host.get('uuid'))
+ if configuredHost is not None:
+ host['hostname'] = configuredHost['host_name']
+
+
def getRemovedHostsCount(clusterDelta):
removedHostsCount = 0
for host in clusterDelta.get('_hosts', []):
@@ -518,6 +527,7 @@ def _verifyNagiosConfig():
if __name__ == '__main__':
args = parse_input()
clusterdata = discoverCluster(args.hostip, args.cluster, args.timeout)
+ replaceHostNamesWithCurrentName(clusterdata.get('hosts'))
duplicateHost = _findDuplicateHost(clusterdata.get('hosts'), args.cluster)
if duplicateHost:
print "ERROR: Host '%s' is already being monitored" % duplicateHost
diff --git a/plugins/server_utils.py b/plugins/server_utils.py
index ab5b4e8..83470cf 100755
--- a/plugins/server_utils.py
+++ b/plugins/server_utils.py
@@ -84,6 +84,15 @@ def getHostGroup(name):
return None
+def getUuidToHostConfigDict():
+ hostConfigs = Model.Host.objects.all
+ resultDict = {}
+ for hostConfig in hostConfigs:
+ if hostConfig.get("_HOST_UUID", None) is not None:
+ resultDict[hostConfig.get("_HOST_UUID")] = hostConfig
+ return resultDict
+
+
def getNRPEBaseCommand(host, timeout=None):
command = NRPE_PATH + " -H " + host
if timeout is not None:
diff --git a/tests/test_discovery.py b/tests/test_discovery.py
index c3a1329..7869a2e 100644
--- a/tests/test_discovery.py
+++ b/tests/test_discovery.py
@@ -194,3 +194,22 @@ class TestDiscovery(TestCaseBase):
'gluster_auto_discovery!10.70.43.57!10.70.43.57'})
hostConfig = {HOST_SERVICES: hostServices}
return hostConfig
+
+ def mockGetUuidToHostConfigDict(self):
+ hostDict = {}
+ hostDict['0001'] = {'host_name': 'old-host1'}
+ hostDict['0002'] = {'host_name': 'old-host2'}
+ hostDict['0003'] = {'host_name': 'old-host3'}
+ return hostDict
+
+ def testReplaceHostNamesWithCurrentName(self):
+ server_utils.getUuidToHostConfigDict = self.mockGetUuidToHostConfigDict
+ clusterData = [{'uuid': '0001', 'hostname': 'new-host1'},
+ {'uuid': '0002', 'hostname': 'new-host2'},
+ {'uuid': '0004', 'hostname': 'new-host4'},
+ {'uuid': '0005', 'hostname': 'new-host5'}]
+ discovery.replaceHostNamesWithCurrentName(clusterData)
+ self.assertEqual(clusterData[0]['hostname'], 'old-host1')
+ self.assertEqual(clusterData[1]['hostname'], 'old-host2')
+ self.assertEqual(clusterData[2]['hostname'], 'new-host4')
+ self.assertEqual(clusterData[3]['hostname'], 'new-host5')