diff --git a/slapos-node/slaptest b/slapos-node/slaptest index 05cbb84b38349c86d9ad8ca76c1039946162c43d..10a7ac9d168566840c859ac6d168c28b4dfcd0e5 100755 --- a/slapos-node/slaptest +++ b/slapos-node/slaptest @@ -99,7 +99,7 @@ def get_slapos_conf_example(): """ register_server_url = "http://git.erp5.org/gitweb/slapos.core.git/blob_plain/HEAD:/slapos.cfg.example" request = urllib2.Request(register_server_url) - url = urllib2.urlopen(request) + url = urllib2.urlopen(request) page = url.read() info, path = tempfile.mkstemp() slapos_cfg_example = open(path,'w') @@ -107,7 +107,7 @@ def get_slapos_conf_example(): slapos_cfg_example.close() return path - + def check_networkcache(config,logger,configuration_parser ,configuration_example_parser): """ @@ -124,20 +124,20 @@ def check_networkcache(config,logger,configuration_parser except KeyError: logger.warn("No %s parameter in %s section" % (key,section)) pass - + if config.test_agent: configuration_dict = dict(configuration_parser.items('slapformat')) if int(configuration_dict['partition_amount']) < 60 : logger.warn("Partition amount is to low for a test agent. Is %s but should be at least 60" % configuration_dict['partition_amount'] ) - + if config.check_upload == True : check_networkcache_upload(config,logger,configuration_dict) class Upload: """ - Class used as a reference to check network cache upload + Class used as a reference to check network cache upload """ def __init__(self): self.data = {'download-binary-dir-url': 'http://www.shacache.org/shadir', @@ -145,13 +145,13 @@ class Upload: 'upload-dir-url': 'https://www.shacache.org/shadir', 'shadir-cert-file': '/etc/slapos-cache/shacache.cert', 'download-cache-url': 'https://www.shacache.org/shacache', - 'upload-cache-url': 'https://www.shacache.org/shacache', - 'shacache-cert-file': '/etc/slapos-cache/shacache.cert', - 'upload-binary-cache-url': 'https://www.shacache.org/shacache', - 'shacache-key-file': '/etc/slapos-cache/shacache.key', + 'upload-cache-url': 'https://www.shacache.org/shacache', + 'shacache-cert-file': '/etc/slapos-cache/shacache.cert', + 'upload-binary-cache-url': 'https://www.shacache.org/shacache', + 'shacache-key-file': '/etc/slapos-cache/shacache.key', 'download-binary-cache-url': 'http://www.shacache.org/shacache', - 'upload-binary-dir-url':'https://www.shacache.org/shadir', - 'signature_private_key_file': '/etc/slapos-cache/signature.key', + 'upload-binary-dir-url':'https://www.shacache.org/shadir', + 'signature_private_key_file': '/etc/slapos-cache/signature.key', 'shadir-key-file': '/etc/slapos-cache/shacache.key'} @@ -165,17 +165,17 @@ def check_networkcache_upload(config,logger,configuration_dict): if not key.find("file") == -1: file = configuration_dict[key] if not os.path.exists(file) : - logger.critical ("%s file for %s parameters does not exist " - % (file,key)) + logger.critical ("%s file for %s parameters does not exist " + % (file,key)) else : logger.info ("%s parameter:%s does exists" % (key,file)) else : if not configuration_dict[key] == upload_parameters.data[key]: - logger.warn("%s is %s sould be %s" + logger.warn("%s is %s sould be %s" %(key,configuration_dict[key] ,upload_parameters.data[key])) except KeyError: - logger.critical("No %s parameter in networkcache section " + logger.critical("No %s parameter in networkcache section " % (key)) pass @@ -201,7 +201,7 @@ def check_computer_id(logger,computer_id,cert_file): if comp_cert == "": logger.error("Certificate file indicated is corrupted (no computer id)") elif comp_cert == computer_id : - logger.info("Certificate and slapos.cfg define same computer id: %s" + logger.info("Certificate and slapos.cfg define same computer id: %s" % computer_id) else : logger.critical("Computers id from cerificate (%s) is different from slapos.cfg (%s)" @@ -223,9 +223,9 @@ def slapos_conf_check (config): # Get example configuration file slapos_cfg_example = get_slapos_conf_example() configuration_example_parser = ConfigParser.RawConfigParser() - configuration_example_parser.read(slapos_cfg_example) + configuration_example_parser.read(slapos_cfg_example) os.remove(slapos_cfg_example) - + # Check sections mandatory_sections = ["slapos","slapformat","networkcache"] for section in mandatory_sections: @@ -242,14 +242,14 @@ def slapos_conf_check (config): configuration_example_dict = dict(configuration_example_parser.items(section)) for key in configuration_example_dict: if not key in configuration_dict: - logger.critical("No %s parameter in %s section " + logger.critical("No %s parameter in %s section " % (key,section)) # check if necessary files exist elif key in ("key_file","cert_file","certificate_repository_path"): files = configuration_dict[key] if not os.path.exists(files) : - logger.critical ("%s file for %s parameters does not exist " - % (files,key)) + logger.critical ("%s file for %s parameters does not exist " + % (files,key)) else : logger.info ("%s parameter:%s does exists" % (key,files)) # check if computer id is the same in slapos.cfg and certificate @@ -274,37 +274,36 @@ class CronFile: # cron file from slapos documentation self.slapgrid_sr_base = """*/5 * * * * root /opt/slapos/bin/slapgrid-sr --logfile=/opt/slapos/slapgrid-sr.log --pidfile=/opt/slapos/slapgrid-sr.pid /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapgrid-sr.log 2>&1""" self.slapgrid_cp_base = """*/5 * * * * root /opt/slapos/bin/slapgrid-cp --logfile=/opt/slapos/slapgrid-cp.log --pidfile=/opt/slapos/slapgrid-cp.pid /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapgrid-cp.log 2>&1""" - self.slapgrid_ur_base = """0 0 * * * root /opt/slapos/bin/slapgrid-ur --logfile=/opt/slapos/slapgrid-ur.log --pidfile=/opt/slapos/slapgrid-ur.pid /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapgrid-ur.log 2>&1""" + self.slapgrid_ur_base = """0 0 * * * root i=20; false; while [ $? != 0 ]; do /opt/slapos/bin/slapgrid-ur --verbose --logfile=/opt/slapos/slapgrid-ur.log --pidfile=/opt/slapos/slapgrid-ur.pid /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapgrid-ur.log 2>&1; sleep $(($i*60)); if [ $i < 20 ]; then let i++; fi; done;""" self.slapformat_base = """0 0 * * * root /opt/slapos/bin/slapformat --log_file=/opt/slapos/slapformat.log -c /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapformat.log 2>&1""" def parse(self,cron_line): """ Parse cron line and give value to attributes """ line = cron_line.split() - command = line[6] - if "slapformat" in command : + if "slapformat" in cron_line : self.slapformat = self.compare(self.slapformat, self.slapformat_base.split() , line) - if "slapgrid-ur" in command : + if "slapgrid-ur" in cron_line : self.slapgrid_ur = self.compare(self.slapgrid_ur, self.slapgrid_ur_base.split() , line) - if "slapgrid-cp" in command : + if "slapgrid-cp" in cron_line : self.slapgrid_cp = self.compare(self.slapgrid_cp, self.slapgrid_cp_base.split() , line) - if "slapgrid-sr" in command : + if "slapgrid-sr" in cron_line : self.slapgrid_sr = self.compare(self.slapgrid_sr, self.slapgrid_sr_base.split() , line) - + def compare(self,state,reference,cron_line): if not state == -1 : return 2 for i in range(0,6): if not reference[i] == cron_line[i] : return 0 - ref = len(reference[6:]) + ref = len(set(reference[6:])) if not len(set(reference[6:]) & set(cron_line[6:])) == ref : return 0 else: return 1 - + def check(self,logger): elements = {"slapformat":self.slapformat,"slapgrid-ur":self.slapgrid_ur, "slapgrid-sr":self.slapgrid_sr,"slapgrid-cp":self.slapgrid_cp} @@ -317,7 +316,7 @@ class CronFile: logger.info("Line for %s command is good" % key) elif elements[key] == 2 : logger.error("You have a duplicated line for %s command" % key) - + def cron_check (config): @@ -345,7 +344,7 @@ def slapos_global_check (config): logger.addHandler(ch) # checking slapos.cfg if not os.path.exists(os.path.join(config.slapos_configuration,'slapos.cfg')) : - logger.critical("No slapos.cfg found in slapos configuration directory: %s" + logger.critical("No slapos.cfg found in slapos configuration directory: %s" % config.slapos_configuration ) else : logger.info("SlapOS configuration file found") diff --git a/slapos-node/template/slapos-node.cron.d b/slapos-node/template/slapos-node.cron.d index db192aa77e0b656c302c8bb76a98158049026ff9..92a76835ae391f676372c79e496775def9bd7b6b 100644 --- a/slapos-node/template/slapos-node.cron.d +++ b/slapos-node/template/slapos-node.cron.d @@ -6,7 +6,7 @@ MAILTO=root */5 * * * * root /opt/slapos/bin/slapgrid-cp --verbose --logfile=/opt/slapos/slapgrid-cp.log --pidfile=/opt/slapos/slapgrid-cp.pid /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapgrid-cp.log 2>&1 # slapgrid-ur: hardcoded script to rerun slapgrid-ur if failed. -* * * * * root i=20; false; while [ $? != 0 ]; do /opt/slapos/bin/slapgrid-ur --verbose --logfile=/opt/slapos/slapgrid-ur.log --pidfile=/opt/slapos/slapgrid-ur.pid /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapgrid-ur.log 2>&1; sleep $(($i*60)); if [ $i < 20 ]; then let i++; fi; done; +0 0 * * * root i=20; false; while [ $? != 0 ]; do /opt/slapos/bin/slapgrid-ur --verbose --logfile=/opt/slapos/slapgrid-ur.log --pidfile=/opt/slapos/slapgrid-ur.pid /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapgrid-ur.log 2>&1; sleep $(($i*60)); if [ $i < 20 ]; then let i++; fi; done; 0 0 * * * root /opt/slapos/bin/slapformat --verbose --log_file=/opt/slapos/slapformat.log -c /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapformat.log 2>&1 diff --git a/templates/debian/cron.d b/templates/debian/cron.d index adfde6cc4962f7bdb4341fb466551e2327adcb4e..93b96d8b462b8bedb6e6667a88b44625cbdf7765 100644 --- a/templates/debian/cron.d +++ b/templates/debian/cron.d @@ -4,7 +4,10 @@ MAILTO=root */5 * * * * root /opt/slapos/bin/slapgrid-sr --verbose --logfile=/opt/slapos/slapgrid-sr.log --pidfile=/opt/slapos/slapgrid-sr.pid /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapgrid-sr.log 2>&1 */5 * * * * root /opt/slapos/bin/slapgrid-cp --verbose --logfile=/opt/slapos/slapgrid-cp.log --pidfile=/opt/slapos/slapgrid-cp.pid /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapgrid-cp.log 2>&1 -0 0 * * * root /opt/slapos/bin/slapgrid-ur --verbose --logfile=/opt/slapos/slapgrid-ur.log --pidfile=/opt/slapos/slapgrid-ur.pid /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapgrid-ur.log 2>&1 + +# slapgrid-ur: hardcoded script to rerun slapgrid-ur if failed. +0 0 * * * root i=20; false; while [ $? != 0 ]; do /opt/slapos/bin/slapgrid-ur --verbose --logfile=/opt/slapos/slapgrid-ur.log --pidfile=/opt/slapos/slapgrid-ur.pid /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapgrid-ur.log 2>&1; sleep $(($i*60)); if [ $i < 20 ]; then let i++; fi; done; + 0 0 * * * root /opt/slapos/bin/slapformat --verbose --log_file=/opt/slapos/slapformat.log -c /etc/opt/slapos/slapos.cfg >> /opt/slapos/slapformat.log 2>&1 0/10 * * * * root if [ -f /etc/opt/slapos/openvpn-needed ]; then ifconfig tapVPN | grep "Scope:Global" > /dev/null ;if [ $? = 0 ]; then ROUTES=$(ip -6 r l | grep default | awk '{print $5}'); for GW in $ROUTES ; do if [ ! $GW = tapVPN ]; then /sbin/ip -6 route del default dev $GW;fi ;done ;fi ;fi