1+ import collections
12import json
23import logging
34import os
1718hostsWrite = homePath + "/serius/hosts.write"
1819hostsBackup = homePath + "/serius/hosts.backup"
1920
20- # Service IP Address
21+ # Service IP Addresses
2122serviceIpAddresses = []
2223
24+ # Service Old IP Addresses
25+ serviceOldIpAddresses = []
26+
2327# Loggings
2428logging .basicConfig (level = logging .INFO , format = "%(asctime)s %(name)s.%(funcName)s +%(lineno)s: %(levelname)-3s [%(process)d] %(message)s" )
2529log = logging .getLogger ('Serius' )
@@ -41,6 +45,10 @@ def resolveDockerIPToDomain(configFileJson):
4145
4246 copyfile (hostsFile , hostsWrite )
4347
48+ global serviceIpAddresses
49+
50+ serviceIpAddresses = []
51+
4452 for serviceKey in configFileJson ["services" ].keys ():
4553
4654 log .info ("Service: " + serviceKey )
@@ -63,21 +71,34 @@ def resolveDockerIPToDomain(configFileJson):
6371
6472 copyfile (hostsWrite , hostsBackup )
6573
66- log . info ( "Map " + serviceKey + " Docker IP to Domain" )
74+ global serviceOldIpAddresses
6775
68- global serviceIpAddresses
76+ log . info ( "Checking if service IP addresses have been changed ..." )
6977
70- for serviceIpAddress in serviceIpAddresses :
78+ compare = lambda x , y : collections . Counter ( x ) == collections . Counter ( y )
7179
72- with open ( hostsWrite , "a" ) as file :
80+ if not compare ( serviceIpAddresses , serviceOldIpAddresses ) :
7381
74- file . write ( serviceIpAddress + " \n " )
82+ log . info ( "Updated the host DNS " )
7583
76- file . close ()
84+ for serviceIpAddress in serviceIpAddresses :
7785
78- copyfile (hostsWrite , hostsFile )
86+ with open (hostsWrite , "a" ) as file :
87+
88+ file .write (serviceIpAddress + "\n " )
89+
90+ file .close ()
91+
92+ copyfile (hostsWrite , hostsFile )
93+
94+ serviceOldIpAddresses = []
95+
96+ serviceOldIpAddresses = serviceIpAddresses [:]
97+
98+ else :
99+
100+ log .info ("Nothing changed" )
79101
80- serviceIpAddresses = []
81102
82103# Main
83104
0 commit comments