def main(work_dir, action): startup_time=time.time() glideinFrontendConfig.frontendConfig.frontend_descript_file = os.path.join(work_dir, glideinFrontendConfig.frontendConfig.frontend_descript_file) frontendDescript = glideinFrontendConfig.FrontendDescript(work_dir) # the log dir is shared between the frontend main and the groups, so use a subdir logSupport.log_dir = os.path.join(frontendDescript.data['LogDir'], "frontend") # Configure frontend process logging process_logs = eval(frontendDescript.data['ProcessLogs']) for plog in process_logs: logSupport.add_processlog_handler("frontend", logSupport.log_dir, plog['msg_types'], plog['extension'], int(float(plog['max_days'])), int(float(plog['min_days'])), int(float(plog['max_mbytes'])), int(float(plog['backup_count'])), plog['compression']) logSupport.log = logging.getLogger("frontend") logSupport.log.info("Logging initialized") logSupport.log.debug("Frontend startup time: %s" % str(startup_time)) try: cleanup_environ() # we use a dedicated config... ignore the system-wide os.environ['CONDOR_CONFIG'] = frontendDescript.data['CondorConfig'] sleep_time = int(frontendDescript.data['LoopDelay']) advertize_rate = int(frontendDescript.data['AdvertiseDelay']) max_parallel_workers = int(frontendDescript.data['GroupParallelWorkers']) restart_attempts = int(frontendDescript.data['RestartAttempts']) restart_interval = int(frontendDescript.data['RestartInterval']) groups = string.split(frontendDescript.data['Groups'], ',') groups.sort() glideinFrontendMonitorAggregator.monitorAggregatorConfig.config_frontend(os.path.join(work_dir, "monitor"), groups) except: logSupport.log.exception("Exception occurred configuring monitoring: ") raise glideinFrontendMonitoring.write_frontend_descript_xml(frontendDescript, os.path.join(work_dir, 'monitor/')) logSupport.log.info("Enabled groups: %s" % groups) # create lock file pid_obj = glideinFrontendPidLib.FrontendPidSupport(work_dir) # start try: pid_obj.register(action) except glideinFrontendPidLib.pidSupport.AlreadyRunning, err: pid_obj.load_registered() logSupport.log.exception("Failed starting Frontend with action %s. Instance with pid %s is aready running for action %s. Exception during pid registration: %s" % (action, pid_obj.mypid , str(pid_obj.action_type), err)) raise
def main(work_dir): startup_time=time.time() glideinFrontendConfig.frontendConfig.frontend_descript_file = os.path.join(work_dir, glideinFrontendConfig.frontendConfig.frontend_descript_file) frontendDescript = glideinFrontendConfig.FrontendDescript(work_dir) # the log dir is shared between the frontend main and the groups, so use a subdir logSupport.log_dir = os.path.join(frontendDescript.data['LogDir'], "frontend") # Configure frontend process logging process_logs = eval(frontendDescript.data['ProcessLogs']) for plog in process_logs: logSupport.add_processlog_handler("frontend", logSupport.log_dir, plog['msg_types'], plog['extension'], int(float(plog['max_days'])), int(float(plog['min_days'])), int(float(plog['max_mbytes']))) logSupport.log = logging.getLogger("frontend") logSupport.log.info("Logging initialized") logSupport.log.debug("Frontend startup time: %s" % str(startup_time)) try: cleanup_environ() # we use a dedicated config... ignore the system-wide os.environ['CONDOR_CONFIG'] = frontendDescript.data['CondorConfig'] sleep_time = int(frontendDescript.data['LoopDelay']) advertize_rate = int(frontendDescript.data['AdvertiseDelay']) restart_attempts = int(frontendDescript.data['RestartAttempts']) restart_interval = int(frontendDescript.data['RestartInterval']) groups = string.split(frontendDescript.data['Groups'], ',') groups.sort() glideinFrontendMonitorAggregator.monitorAggregatorConfig.config_frontend(os.path.join(work_dir, "monitor"), groups) except: logSupport.log.exception("Exception occurred configuring monitoring: ") raise glideinFrontendMonitoring.write_frontend_descript_xml(frontendDescript, os.path.join(work_dir, 'monitor/')) # create lock file pid_obj = glideinFrontendPidLib.FrontendPidSupport(work_dir) # start pid_obj.register() try: try: spawn(sleep_time, advertize_rate, work_dir, frontendDescript, groups, restart_attempts, restart_interval) except KeyboardInterrupt: logSupport.log.info("Received signal...exit") except: logSupport.log.exception("Exception occurred trying to spawn: ") finally: pid_obj.relinquish()
def main(work_dir, action): startup_time = time.time() glideinFrontendConfig.frontendConfig.frontend_descript_file = os.path.join(work_dir, glideinFrontendConfig.frontendConfig.frontend_descript_file) frontendDescript = glideinFrontendConfig.FrontendDescript(work_dir) # the log dir is shared between the frontend main and the groups, so use a subdir logSupport.log_dir = os.path.join(frontendDescript.data['LogDir'], "frontend") # Configure frontend process logging process_logs = eval(frontendDescript.data['ProcessLogs']) for plog in process_logs: logSupport.add_processlog_handler("frontend", logSupport.log_dir, plog['msg_types'], plog['extension'], int(float(plog['max_days'])), int(float(plog['min_days'])), int(float(plog['max_mbytes'])), int(float(plog['backup_count'])), plog['compression']) logSupport.log = logging.getLogger("frontend") logSupport.log.info("Logging initialized") logSupport.log.debug("Frontend startup time: %s" % str(startup_time)) try: cleanup_environ() # we use a dedicated config... ignore the system-wide os.environ['CONDOR_CONFIG'] = frontendDescript.data['CondorConfig'] sleep_time = int(frontendDescript.data['LoopDelay']) advertize_rate = int(frontendDescript.data['AdvertiseDelay']) max_parallel_workers = int(frontendDescript.data['GroupParallelWorkers']) restart_attempts = int(frontendDescript.data['RestartAttempts']) restart_interval = int(frontendDescript.data['RestartInterval']) groups = sorted(frontendDescript.data['Groups'].split(',')) glideinFrontendMonitorAggregator.config_frontend(os.path.join(work_dir, "monitor"), groups) except: logSupport.log.exception("Exception occurred configuring monitoring: ") raise glideinFrontendMonitoring.write_frontend_descript_xml( frontendDescript, os.path.join(work_dir, 'monitor/')) logSupport.log.info("Enabled groups: %s" % groups) # create lock file pid_obj = glideinFrontendPidLib.FrontendPidSupport(work_dir) # start try: pid_obj.register(action) except glideinFrontendPidLib.pidSupport.AlreadyRunning as err: pid_obj.load_registered() logSupport.log.exception("Failed starting Frontend with action %s. Instance with pid %s is aready running for action %s. Exception during pid registration: %s" % (action, pid_obj.mypid, str(pid_obj.action_type), err)) raise try: try: if action == "run": spawn(sleep_time, advertize_rate, work_dir, frontendDescript, groups, max_parallel_workers, restart_interval, restart_attempts) elif action in ('removeWait', 'removeIdle', 'removeAll', 'removeWaitExcess', 'removeIdleExcess', 'removeAllExcess'): spawn_removal(work_dir, frontendDescript, groups, max_parallel_workers, action) else: raise ValueError("Unknown action: %s" % action) except KeyboardInterrupt: logSupport.log.info("Received signal...exit") except HUPException: logSupport.log.info("Received SIGHUP, reload config") pid_obj.relinquish() os.execv( os.path.join(FRONTEND_DIR, "../creation/reconfig_frontend"), ['reconfig_frontend', '-sighupreload', '-xml', '/etc/gwms-frontend/frontend.xml'] ) except: logSupport.log.exception("Exception occurred trying to spawn: ") finally: pid_obj.relinquish()
def main(work_dir, action): startup_time = time.time() glideinFrontendConfig.frontendConfig.frontend_descript_file = os.path.join(work_dir, glideinFrontendConfig.frontendConfig.frontend_descript_file) frontendDescript = glideinFrontendConfig.FrontendDescript(work_dir) # the log dir is shared between the frontend main and the groups, so use a subdir logSupport.log_dir = os.path.join(frontendDescript.data['LogDir'], "frontend") # Configure frontend process logging process_logs = eval(frontendDescript.data['ProcessLogs']) for plog in process_logs: logSupport.add_processlog_handler("frontend", logSupport.log_dir, plog['msg_types'], plog['extension'], int(float(plog['max_days'])), int(float(plog['min_days'])), int(float(plog['max_mbytes'])), int(float(plog['backup_count'])), plog['compression']) logSupport.log = logging.getLogger("frontend") logSupport.log.info("Logging initialized") logSupport.log.debug("Frontend startup time: %s" % str(startup_time)) try: cleanup_environ() # we use a dedicated config... ignore the system-wide os.environ['CONDOR_CONFIG'] = frontendDescript.data['CondorConfig'] sleep_time = int(frontendDescript.data['LoopDelay']) advertize_rate = int(frontendDescript.data['AdvertiseDelay']) max_parallel_workers = int(frontendDescript.data['GroupParallelWorkers']) restart_attempts = int(frontendDescript.data['RestartAttempts']) restart_interval = int(frontendDescript.data['RestartInterval']) groups = sorted(frontendDescript.data['Groups'].split(',')) glideinFrontendMonitorAggregator.monitorAggregatorConfig.config_frontend(os.path.join(work_dir, "monitor"), groups) except: logSupport.log.exception("Exception occurred configuring monitoring: ") raise glideinFrontendMonitoring.write_frontend_descript_xml( frontendDescript, os.path.join(work_dir, 'monitor/')) logSupport.log.info("Enabled groups: %s" % groups) # create lock file pid_obj = glideinFrontendPidLib.FrontendPidSupport(work_dir) # start try: pid_obj.register(action) except glideinFrontendPidLib.pidSupport.AlreadyRunning as err: pid_obj.load_registered() logSupport.log.exception("Failed starting Frontend with action %s. Instance with pid %s is aready running for action %s. Exception during pid registration: %s" % (action, pid_obj.mypid, str(pid_obj.action_type), err)) raise try: try: if action == "run": spawn(sleep_time, advertize_rate, work_dir, frontendDescript, groups, max_parallel_workers, restart_interval, restart_attempts) elif action in ('removeWait', 'removeIdle', 'removeAll', 'removeWaitExcess', 'removeIdleExcess', 'removeAllExcess'): spawn_removal(work_dir, frontendDescript, groups, max_parallel_workers, action) else: raise ValueError("Unknown action: %s" % action) except KeyboardInterrupt: logSupport.log.info("Received signal...exit") except HUPException: logSupport.log.info("Received SIGHUP, reload config") pid_obj.relinquish() os.execv( os.path.join(FRONTEND_DIR, "../creation/reconfig_frontend"), ['reconfig_frontend', '-sighupreload', '-xml', '/etc/gwms-frontend/frontend.xml'] ) except: logSupport.log.exception("Exception occurred trying to spawn: ") finally: pid_obj.relinquish()