def main(): if utils.no_task_record("init_pipeline"): init_pipeline() utils.task_record("init_pipeline") if utils.no_task_record("trans_pipeline"): handle_pipeline() utils.task_record("trans_pipeline")
def main(): print "\nbegin handle lb bindings\n" current_folder = utils.get_current_folder() for filename in os.listdir(current_folder): if filename.startswith(consts.Prefix["lb_name_prefix"]): lb_file = filename print "\nfind lb file " + filename if not os.path.exists(current_folder + lb_file): raise "lb file for {} not exists! please check task of init lb".format( lb_file) lb_datas = get_lb(lb_file) lb_name = lb_datas["name"] print "\nbegin handle lb {} \n".format(lb_name) for frontend in lb_datas["frontends"]: port = frontend["port"] if utils.no_task_record(lb_file + "_frontend_" + str(port)): if frontend["protocol"] == "tcp": print "begin check if frontend had been used " check_frontend_used(lb_name, port) print "begin create frontend for lb {} and port {}".format( lb_name, port) create_frontend(lb_name, frontend) utils.task_record(lb_file + "_frontend_" + str(port)) if frontend["protocol"] == "tcp": print "\nskip tcp frontend {} rules create\n".format(port) continue rules = frontend["rules"] for rule in rules: if utils.no_task_record(lb_file + "_frontend_" + str(port) + "_rule_" + rule["rule_id"]): # if rule["type"] == "system": # continue print "\nbegin create rule for domain {} and port {}".format( rule["domain"], port) rule_info = create_rule(lb_name, port, copy.deepcopy(rule)) # record rule create task utils.task_record(lb_file + "_frontend_" + str(port) + "_rule_" + rule["rule_id"]) print "\nnew rule info is: {}\n".format( json.dumps(rule_info)) if "services" in rule and len(rule["services"]) > 0: bind_rule_svc(lb_name, frontend["port"], rule_info["data"]["rule_id"], rule["services"])
def handle_lb_for_svc(svc_name): print "\nbegin handle lb bindings for svc {}".format(svc_name) svc_lb_data = get_svc_lb(svc_name) if not isinstance(svc_lb_data, list): return for lb_data in svc_lb_data: lb_name = lb_data["name"] for frontend in lb_data["frontends"]: port = frontend["port"] frontend_task = lb_name + "_frontend_" + str(port) if utils.no_task_record(frontend_task): if frontend["protocol"] == "tcp": print "begin check if frontend had been used " check_frontend_used(lb_name, port) print "begin create frontend for lb {} and port {}".format( lb_name, port) create_frontend(lb_name, frontend) utils.task_record(frontend_task) if frontend["protocol"] == "tcp": print "\nskip tcp frontend {} rules create\n".format(port) continue rules = frontend["rules"] for rule in rules: rule_task = lb_name + "_frontend_" + str( port) + "_rule_" + rule["rule_id"] if utils.no_task_record(rule_task): # if rule["type"] == "system": # continue print "\nbegin create rule for domain {} and port {}".format( rule["domain"], port) rule_info = create_rule(lb_name, port, copy.deepcopy(rule)) # record rule create task utils.task_record(rule_task) print "\nnew rule info is: {}\n".format( json.dumps(rule_info)) if "services" in rule and len(rule["services"]) > 0: bind_rule_svc(lb_name, frontend["port"], rule_info["data"]["rule_id"], rule["services"])
def handle_pipeline(): print "\nbegin update pipeline data\n" current_folder = utils.get_current_folder() for filename in os.listdir(current_folder): if filename.startswith(consts.Prefix["pipeline_name_prefix"]): pipeline_file = filename if utils.no_task_record(pipeline_file): print "\nfind pipeline file " + filename if not os.path.exists(current_folder + pipeline_file): raise "pipeline file for {} not exists! please check task of init lb".format( pipeline_file) pipeline_data = utils.file_reader(current_folder + pipeline_file) pipeline_name = pipeline_data["name"] print "\nbegin handle pipeline {} \n".format(pipeline_name) transed_pipeline = trans_pipeline(pipeline_data) print "transed pipeline data is {}".format( json.dumps(transed_pipeline)) print "\n begin update pipeline {}".format( transed_pipeline["name"]) update_pipeline(transed_pipeline) utils.task_record(pipeline_file)
if utils.no_common_task_record("sync_namespace"): namespaces.mock_sync_ns() # print "Please execute sql for jakiro db by hands;\n" utils.task_common_record("sync_namespace") # init lb info if utils.no_common_task_record("init_lb_list"): lb.init_lb_list() utils.task_common_record("init_lb_list") # transfer by project projects = utils.get_projects() for pro in projects: # init project project.init_current_project(pro["name"]) if utils.no_task_record("init_services"): services.init_svc_list() utils.task_record("init_services") if utils.no_task_record("init_service_detail"): services.init_svc_detail() utils.task_record("init_service_detail") if utils.no_task_record("init_service_lb"): lb.init_svc_lb() utils.task_record("init_service_lb") if utils.no_task_record("init_applications"): applications.init_app_list() utils.task_record("init_applications") if utils.no_task_record("init_application_detail"): applications.init_app_svc_detail()
def main(): app_list = get_app_list() for app in app_list: app_name = app["app_name"].lower() app_status = app["current_status"] task_single_app = "trans_app_{app_id}_{app_name}".format(app_id=app["uuid"], app_name=app_name) if utils.no_task_record(task_single_app): # skipped excluded services in consts.ExcludedServiceNames if app_name in consts.ExcludedApps: print "skipped app {} because configed in consts.ExcludedApps".format(app_name) continue if app_status not in consts.IncludeAppStatus: raw_tips = "{app_name} status is {app_status}, input Yes/No for continue or skip ". \ format(app_name=app_name, app_status=app_status) answer = raw_input(raw_tips) if answer.lower() == "no": print "skipped app {} because current_status is {}".format(app_name, app_status) continue print "begin trans application data to new app data for application {}".format(app_name) app_data = trans_app_data(app) print "app data for application {}".format(app_name) print app_data print "\nbegin delete application old application {}".format(app_name) delete_old_application(app["uuid"]) print "\nwaiting application {} for delete ".format(app_name) for count in range(50): time.sleep(3) v1_application_info = get_v1_app_by_api(app["uuid"]) if isinstance(v1_application_info, dict) and "errors" in v1_application_info: print "\n app {} delete done".format(app_name) break print "\nbegin create app for application {} ".format(app_name) app_info = services.create_app(app_data) if isinstance(app_info, dict) and "errors" in app_info: search_apps = services.get_app_by_name(app_data["resource"]["name"]) if len(search_apps) == 0: exit("create app error!!!!") app_info = search_apps[0] is_running = True if app_status not in ["Running", "Warning"]: is_running = False content = "{}-{}-{}\n".format(utils.get_current_project(), app_name, app_status) utils.file_writer("not_running_app.list", content, "a+") print "app {} current status is {}, will not waiting for created done".format(app_name,app_status) if consts.Configs["wait_for_create_done"] and is_running: # print app_info print "\nwaiting new app {} for create ".format(app_name) create_done = False for count in range(50): time.sleep(3) app = services.get_app_by_api(app_info["resource"]["uuid"]) app_current_state = app["resource"]["status"] if app_current_state == "Running": print "\n app {} create done".format(app_name) create_done = True break else: print "\n app {} current status is {}, continue waiting...".format(app_name, app_current_state) if not create_done: print "application create too slow , please check!" # exit(1) if create_done and consts.Configs["update_app"]: # begin update app for bind old tag app = services.get_app_by_api(app_info["resource"]["uuid"]) update_done = False services.update_app(app) print "\nwaiting app {} for update ".format(app_name) for count in range(50): time.sleep(3) app = services.get_app_by_api(app_info["resource"]["uuid"]) app_current_state = app["resource"]["status"] if app_current_state == "Running": print "\n app {} update done".format(app_name) update_done = True break else: print "\n app {} current status is {}, continue waiting...".format(app_name, app_current_state) if not update_done: print "application update too slow , please check!" # exit(1) else: time.sleep(3) # handle lb binding for app_service in app["services"]: if "resource" in app_service and "name" in app_service["resource"]: lb.handle_lb_for_svc(app_service["resource"]["name"].lower()) elif "service_name" in app_service: lb.handle_lb_for_svc(app_service["service_name"].lower()) # if service_status == "Stopped": # app_id = app_info["resource"]["uuid"] # utils.send_request("PUT", consts.URLS["stop_app"].format(app_id=app_id)) utils.task_record(task_single_app) print "!!!!!Status Confirm: old app status is {}, " \ "please check if should change by hands".format(app_status) exit(1)