def save_basic_section(basic_section, ci_task): print(basic_section) SimpleLogger.info(basic_section) parameter_map = basic_section[0].get('parameter') for item in parameter_map: if item.get('name') == "Description": ci_task.Description = item.get('value') if item.get('name') == "ci_task_project": ci_task.Project = item.get('value') if item.get('name') == "TaskName": ci_task.TaskName = item.get('value') if item.get('name') == "DeployService": ci_task.DeployService = item.get('value') if item.get('name') == "HistoryCleanStrategy": ci_task.HistoryCleanStrategy = item.get('value') if item.get('name') == "time_trigger": if CITaskConfigService.get_parameter_value( parameter_map, 'ci_task_trigger') == 'on': ci_task.Schedule = item.get('value') else: ci_task.Schedule = None ci_task.save() ci_task_config = CITaskConfigService.get_ci_task_config( ci_task.TaskConfig) ci_task_config['basic_section']['plugins'] = basic_section CITaskConfig.objects.save(ci_task_config)
def run(self): while True: time.sleep(5) if not self.thread_stop: SimpleLogger.info("igat_driver") else: break
def get_svncommand(self, command, startversion, endversion): commandtext = command.replace("{STARTVERSION}", startversion) commandtext = commandtext.replace("{ENDVERSION}", endversion) commandtext = commandtext.replace("{URL}", self.url) commandtext = commandtext.replace("{USER}", self.user) commandtext = commandtext.replace("{PASSWORD}", self.passwd) SimpleLogger.info(commandtext + self.templog + SvnHelper.local_svn_dir + SvnHelper.no_store_password) return commandtext + self.templog + SvnHelper.local_svn_dir + SvnHelper.no_store_password
def handle(self): ''' socket server 处理接收到的请求。 首先读取请求内容,然后查找匹配的处理器,最后调用处理发送返回值 ''' SimpleLogger.info("in socket handler") controller_message = self.reciveRequest() self.send_return_value(controller_message) self.process_request(controller_message) SimpleLogger.info("finised socket process")
def stop(self, controller_message): driver_pool = DriverPool() if controller_message.task_command != TQCommand.Value("STOP"): return else: SimpleLogger.info("Stop job, the job uuid is:[" + controller_message.task_uuid + "]") if driver_pool.has_value(controller_message.task_uuid): driver_pool.get_value(controller_message.task_uuid).stop() driver_pool.clear(controller_message.task_uuid) else: raise Exception("no running job found with uuid " + controller_message.task_uuid)
def start(self, controller_message): driver_pool = DriverPool() if controller_message.task_command != TQCommand.Value("START"): return else: SimpleLogger.info("Start job, the job uuid is:[" + controller_message.task_uuid + "]") if not driver_pool.has_value(controller_message.task_uuid): request_driver = BusinessDriverLoader.get_driver_instance( controller_message) if request_driver: request_driver.start() driver_pool.put_value(controller_message.task_uuid, request_driver) else: raise Exception("can not find driver with driver key " + controller_message.driver_key) else: raise Exception("the job with uuid " + controller_message.task_uuid + "is running!")
def send_return_value(self, controller_message): ''' 发送返回值 ''' SimpleLogger.info("start send return value to controller") try: agent_message = Agent() agent_message.task_id = controller_message.task_id agent_message.task_uuid = controller_message.task_uuid agent_message.result = TaskResult.Value("SUCCESS") agent_message.message = "recive task successfully!" if controller_message == None: agent_message.task_result = TaskResult.Value("FAIL") agent_message.message = "recive task fail!" return_value = agent_message.SerializeToString() self.wfile.write(return_value) except Exception as ex: SimpleLogger.info( "send value to controller fail and error message is:" + str(ex)) SimpleLogger.error(ex)
def save_task_config(request, ci_task): config_section_dict = eval(request.POST.get('section')) SimpleLogger.info(config_section_dict) if config_section_dict.__contains__("basic_section"): CITaskConfigService.save_basic_section( config_section_dict.get('basic_section'), ci_task) if config_section_dict.__contains__("pre_section"): CITaskConfigService.save_pre_section( config_section_dict.get('pre_section'), ci_task.TaskConfig) if config_section_dict.__contains__("scm_section"): CITaskConfigService.save_scm_section( config_section_dict.get('scm_section'), ci_task.TaskConfig) if config_section_dict.__contains__("build_section"): CITaskConfigService.save_build_section( config_section_dict.get('build_section'), ci_task.TaskConfig) if config_section_dict.__contains__("post_section"): CITaskConfigService.save_post_section( config_section_dict.get('post_section'), ci_task.TaskConfig)
def process_request(self, controller_message): SimpleLogger.info("Start processing job. the job uuid is:[" + controller_message.task_uuid + "]") try: self.start(controller_message) self.stop(controller_message) except Exception as ex: SimpleLogger.info("Process job fail the job uuid is:[" + controller_message.task_uuid + "]") SimpleLogger.info("Error:" + str(ex)) SimpleLogger.error(ex)
def reciveRequest(self): ''' 获取请求内容 ''' SimpleLogger.info("start recive data from controller") controller_message = None try: data = self.rfile.read1(1024) controller_message = Controller() controller_message.ParseFromString(data) SimpleLogger.info( "recive job from controller. the job uuid is:[" + str(controller_message.task_uuid) + "]") except Exception as ex: SimpleLogger.info( "recive data from controller fail and error message is:" + str(ex)) SimpleLogger.error(ex) return controller_message
def stop(self): self.thread_stop = True SimpleLogger.info("stop thread")
def save_scm_section(scm_section, config_id): ci_task_config = CITaskConfigService.get_ci_task_config(config_id) ci_task_config['scm_section']['plugins'] = scm_section SimpleLogger.info("++++++++++++++++++++++++++++++++++++++++") SimpleLogger.info(scm_section) CITaskConfig.objects.save(ci_task_config)
#coding=utf-8 ''' Created on 2016-3-10 @author: zhangtiande ''' from gatesidelib.socket_helper.socket_server import SocketServer from agent.request_handlers.socket_handler import SocketHandler from agent.globalconfig import GlobalConfig from gatesidelib.common.simplelogger import SimpleLogger from agent.request_handlers.driver_pool import DriverPool if __name__ == '__main__': host = GlobalConfig.SERVERHOST port = GlobalConfig.DEFAULTSERVERPORT SimpleLogger.info("start server [" + host + "] with port[" + str(port) + "]") try: driver_pool = DriverPool() tcp_server = SocketServer.get_default_server(host, port, SocketHandler) SocketServer.start_server(tcp_server) except Exception as ex: SimpleLogger.info("start server [" + host + "] with port[" + str(port) + "] fail") SimpleLogger.error(str(ex))