Example #1
0
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")
Example #2
0
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"])
Example #3
0
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"])
Example #4
0
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)
Example #5
0
    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()
Example #6
0
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)