Example #1
0
    def get(self, request, name, stage):
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        env_promote = environs_helper.get_env_promotes_config(
            request, name, stage)
        stage_names = ['BUILD']
        for stage_name in stages:
            if stage_name != env['stageName']:
                stage_names.append(stage_name)

        if request.is_ajax():
            # return data for ajax calls
            html = render_to_string(
                'configs/promote_config.tmpl', {
                    "env": env,
                    "stage_names": stage_names,
                    "env_promote": env_promote,
                    "csrf_token": get_token(request),
                })
            return HttpResponse(json.dumps({'html': html}),
                                content_type="application/json")

        # otherwise, return a page
        return render(
            request, 'configs/promote_config.html', {
                "env": env,
                "stages": stages,
                "stage_names": stage_names,
                "env_promote": env_promote,
            })
Example #2
0
    def get(self, request, name, stage):
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        env_promote = environs_helper.get_env_promotes_config(request, name, stage)
        stage_names = ['BUILD']
        for stage_name in stages:
            if stage_name != env['stageName']:
                stage_names.append(stage_name)

        if request.is_ajax():
            # return data for ajax calls
            html = render_to_string('configs/promote_config.tmpl', {
                "env": env,
                "stage_names": stage_names,
                "env_promote": env_promote,
                "csrf_token": get_token(request),
            })
            return HttpResponse(json.dumps({'html': html}), content_type="application/json")

        # otherwise, return a page
        return render(request, 'configs/promote_config.html', {
            "env": env,
            "stages": stages,
            "stage_names": stage_names,
            "env_promote": env_promote,
        })
Example #3
0
    def get(self, request, name, stage):
        if request.is_ajax():
            env = environs_helper.get_env_by_stage(request, name, stage)
            environs_helper.set_active_max_parallel(env)
            html = render_to_string('configs/env_config.tmpl', {
                "env": env,
                "csrf_token": get_token(request),
            })
            return HttpResponse(json.dumps({'html': html}), content_type="application/json")

        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)

        # get capacity to decide if we need to show the remove stage button
        show_remove = True
        # if people have already specified host capacity or group capacity but do not have cluster config
        # show capacity config page; otherwise, show cluster config page
        hosts = environs_helper.get_env_capacity(request, name, stage, capacity_type="HOST")
        if hosts:
            show_remove = False
        else:
            groups = environs_helper.get_env_capacity(request, name, stage, capacity_type="GROUP")
            if groups:
                show_remove = False

        environs_helper.set_active_max_parallel(env)

        return render(request, 'configs/env_config.html', {
            "env": env,
            "stages": stages,
            "show_remove": show_remove,
            "pinterest": IS_PINTEREST,
        })
    def get(self, request, name, stage):
        flavor = request.GET.get('flavor', 'AC')
        if flavor == AC_FLAVOR:
            configs = environs_helper.get_env_agent_config(request, name, stage)
        else:
            configs = environs_helper.get_env_script_config(request, name, stage)
        if request.is_ajax():
            # return data for ajax calls
            env = environs_helper.get_env_by_stage(request, name, stage)
            html = render_to_string('configs/config_map.tmpl', {
                "env": env,
                "configs": configs,
                "customization": CUSTOMIZATION[flavor],
                "csrf_token": get_token(request),
            })
            return HttpResponse(json.dumps({'html': html}), content_type="application/json")

        # otherwise, return a page
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        return render(request, 'configs/config_map.html', {
            "envs": envs,
            "env": env,
            "stages": stages,
            "configs": configs,
            "customization": CUSTOMIZATION[flavor],
        })
Example #5
0
    def get(self, request, name, stage):
        if request.is_ajax():
            # return data for ajax calls
            hosts = environs_helper.get_env_capacity(request,
                                                     name,
                                                     stage,
                                                     capacity_type="HOST")
            groups = common.get_non_cmp_group(request, name, stage)
            env = environs_helper.get_env_by_stage(request, name, stage)
            html = render_to_string(
                "configs/capacity.tmpl", {
                    "env": env,
                    "hosts": ','.join(hosts),
                    "groups": ','.join(groups),
                    "csrf_token": get_token(request),
                })
            return HttpResponse(json.dumps({'html': html}),
                                content_type="application/json")

        # otherwise, return a page
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        hosts = environs_helper.get_env_capacity(request,
                                                 name,
                                                 stage,
                                                 capacity_type="HOST")
        groups = common.get_non_cmp_group(request, name, stage)
        return render(
            request, 'configs/capacity.html', {
                "env": env,
                "stages": stages,
                "hosts": ','.join(hosts),
                "groups": ','.join(groups),
            })
Example #6
0
def get_cluster(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    provider_list = baseimages_helper.get_all_providers(request)
    basic_cluster_info = clusters_helper.get_cluster(request, env.get("clusterName"))
    adv = False
    is_cmp = False
    if basic_cluster_info:
        base_image_id = basic_cluster_info.get("baseImageId")
        base_image = baseimages_helper.get_by_id(request, base_image_id)
        if base_image.get("abstract_name") != CMP_DOCKER_IMAGE:
            adv = True
        else:
            is_cmp = True

    params = request.GET
    if params.get("adv"):
        adv = params.get("adv")

    return render(
        request,
        "clusters/clusters.html",
        {
            "env": env,
            "envs": envs,
            "stages": stages,
            "provider_list": provider_list,
            "basic_cluster_info": basic_cluster_info,
            "adv": adv,
            "is_cmp": is_cmp,
        },
    )
Example #7
0
    def get(self, request, name, stage):
        if request.is_ajax():
            env = environs_helper.get_env_by_stage(request, name, stage)
            environs_helper.set_active_max_parallel(env)
            html = render_to_string('configs/env_config.tmpl', {
                "env": env,
                "csrf_token": get_token(request),
            })
            return HttpResponse(json.dumps({'html': html}), content_type="application/json")

        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)

        # get capacity to decide if we need to show the remove stage button
        show_remove = True
        # if people have already specified host capacity or group capacity but do not have cluster config
        # show capacity config page; otherwise, show cluster config page
        hosts = environs_helper.get_env_capacity(request, name, stage, capacity_type="HOST")
        if hosts:
            show_remove = False
        else:
            groups = environs_helper.get_env_capacity(request, name, stage, capacity_type="GROUP")
            if groups:
                show_remove = False

        environs_helper.set_active_max_parallel(env)

        return render(request, 'configs/env_config.html', {
            "envs": envs,
            "env": env,
            "stages": stages,
            "show_remove": show_remove,
            "pinterest": IS_PINTEREST,
        })
Example #8
0
    def get(self, request, name, stage):
        if request.is_ajax():
            # return data for ajax calls
            hosts = environs_helper.get_env_capacity(request, name, stage, capacity_type="HOST")
            groups = environs_helper.get_env_capacity(request, name, stage, capacity_type="GROUP")
            env = environs_helper.get_env_by_stage(request, name, stage)
            html = render_to_string("configs/capacity.tmpl", {
                "env": env,
                "hosts": ','.join(hosts),
                "groups": ','.join(groups),
                "csrf_token": get_token(request),

            })
            return HttpResponse(json.dumps({'html': html}), content_type="application/json")

        # otherwise, return a page
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        hosts = environs_helper.get_env_capacity(request, name, stage, capacity_type="HOST")
        groups = environs_helper.get_env_capacity(request, name, stage, capacity_type="GROUP")
        return render(request, 'configs/capacity.html', {
            "env": env,
            "stages": stages,
            "hosts": ','.join(hosts),
            "groups": ','.join(groups),
        })
Example #9
0
def promote(request, name, stage, deploy_id):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)

    env_wrappers = []
    for temp_env in envs:
        env_wrapper = {}
        env_wrapper["env"] = temp_env
        env_wrapper["env_promote"] = environs_helper.get_env_promotes_config(
            request, temp_env['envName'], temp_env['stageName'])
        env_wrappers.append(env_wrapper)

    deploy = deploys_helper.get(request, deploy_id)
    build = builds_helper.get_build(request, deploy['buildId'])

    html = render_to_string(
        "environs/env_promote.html", {
            "stages": stages,
            "envs": envs,
            "env": env,
            "env_wrappers": env_wrappers,
            "deploy": deploy,
            "build": build,
            "csrf_token": get_token(request),
        })
    return HttpResponse(html)
Example #10
0
    def get(self, request, name, stage):
        if request.is_ajax():
            env = environs_helper.get_env_by_stage(request, name, stage)
            html = render_to_string('configs/env_config.tmpl', {
                "env": env,
                "csrf_token": get_token(request),
            })
            return HttpResponse(json.dumps({'html': html}), content_type="application/json")

        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)

        # get capacity to decide if we need to show the remove stage button
        show_remove = True
        hosts = environs_helper.get_env_capacity(request, name, stage, capacity_type="HOST")
        if hosts:
            show_remove = False
        else:
            groups = environs_helper.get_env_capacity(request, name, stage, capacity_type="GROUP")
            if groups:
                show_remove = False

        return render(request, 'configs/env_config.html', {
            "env": env,
            "stages": stages,
            "show_remove": show_remove,
            "pinterest": IS_PINTEREST,
        })
Example #11
0
def promote(request, name, stage, deploy_id):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)

    env_wrappers = []
    for temp_env in envs:
        env_wrapper = {}
        env_wrapper["env"] = temp_env
        env_wrapper["env_promote"] = environs_helper.get_env_promotes_config(request,
                                                                             temp_env['envName'],
                                                                             temp_env['stageName'])
        env_wrappers.append(env_wrapper)

    deploy = deploys_helper.get(request, deploy_id)
    build = builds_helper.get_build(request, deploy['buildId'])

    html = render_to_string("environs/env_promote.html", {
        "stages": stages,
        "envs": envs,
        "env": env,
        "env_wrappers": env_wrappers,
        "deploy": deploy,
        "build": build,
        "csrf_token": get_token(request),
    })
    return HttpResponse(html)
Example #12
0
    def get(self, request, name, stage):
        if request.is_ajax():
            env = environs_helper.get_env_by_stage(request, name, stage)
            html = render_to_string('configs/schedule_config.tmpl', {
                "env": env,
                "csrf_token": get_token(request),
            })
            return HttpResponse(json.dumps({'html': html}),
                                content_type="application/json")

        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        agent_count = agents_helper.get_agents_total_by_env(request, env["id"])
        schedule_id = env.get('scheduleId', None)
        if schedule_id != None:
            schedule = schedules_helper.get_schedule(request, name, stage,
                                                     schedule_id)
        else:
            schedule = None
        max_parallel_number = env["maxParallel"]
        return render(
            request, 'configs/schedule_config.html', {
                "env": env,
                "schedule": schedule,
                "agent_count": agent_count,
                "max_parallel_number": max_parallel_number,
            })
Example #13
0
    def get(self, request, name, stage):
        flavor = request.GET.get('flavor', 'AC')
        if flavor == AC_FLAVOR:
            configs = environs_helper.get_env_agent_config(
                request, name, stage)
        else:
            configs = environs_helper.get_env_script_config(
                request, name, stage)
        if request.is_ajax():
            # return data for ajax calls
            env = environs_helper.get_env_by_stage(request, name, stage)
            html = render_to_string(
                'configs/config_map.tmpl', {
                    "env": env,
                    "configs": configs,
                    "customization": CUSTOMIZATION[flavor],
                    "csrf_token": get_token(request),
                })
            return HttpResponse(json.dumps({'html': html}),
                                content_type="application/json")

        # otherwise, return a page
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        return render(
            request, 'configs/config_map.html', {
                "env": env,
                "stages": stages,
                "configs": configs,
                "customization": CUSTOMIZATION[flavor],
            })
Example #14
0
def get_cluster(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    provider_list = baseimages_helper.get_all_providers(request)
    basic_cluster_info = clusters_helper.get_cluster(request, env.get('clusterName'))
    adv = False
    is_cmp = False
    if basic_cluster_info:
        base_image_id = basic_cluster_info.get('baseImageId')
        base_image = baseimages_helper.get_by_id(request, base_image_id)
        if base_image.get('abstract_name') != 'CMP-DOCKER':
            adv = True
        else:
            is_cmp = True

    params = request.GET
    if params.get('adv'):
        adv = params.get('adv')

    return render(request, 'clusters/clusters.html', {
        'env': env,
        'envs': envs,
        'stages': stages,
        'provider_list': provider_list,
        'basic_cluster_info': basic_cluster_info,
        'adv': adv,
        'is_cmp': is_cmp,
    })
Example #15
0
    def get(self, request, name, stage=None):
        envs = environs_helper.get_all_env_stages(request, name)

        if len(envs) == 0:
            return redirect('/')

        stages, env = common.get_all_stages(envs, stage)
        env_promote = environs_helper.get_env_promotes_config(request, name, env['stageName'])
        stage = env['stageName']
        username = request.teletraan_user_id.name
        request_feedback = check_feedback_eligible(request, username)
        groups = environs_helper.get_env_capacity(request, name, stage, capacity_type="GROUP")
        metrics = environs_helper.get_env_metrics_config(request, name, stage)
        alarms = environs_helper.get_env_alarms_config(request, name, stage)

        if not env['deployId']:
            capacity_hosts = deploys_helper.get_missing_hosts(request, name, stage)
            response = render(request, 'environs/env_landing.html', {
                "env": env,
                "env_promote": env_promote,
                "stages": stages,
                "metrics": metrics,
                "alarms": alarms,
                "request_feedback": request_feedback,
                "groups": groups,
                "capacity_hosts": capacity_hosts,
                "pinterest": IS_PINTEREST,
            })
            showMode = 'complete'
            sortByStatus = 'true'
        else:
            # Get deploy progress
            progress = deploys_helper.update_progress(request, name, stage)
            showMode = _fetch_param_with_cookie(
                request, 'showMode', MODE_COOKIE_NAME, 'complete')
            sortByStatus = _fetch_param_with_cookie(
                request, 'sortByStatus', STATUS_COOKIE_NAME, 'true')
            report = agent_report.gen_report(request, env, progress, sortByStatus=sortByStatus)
            report.showMode = showMode
            report.sortByStatus = sortByStatus
            response = render(request, 'environs/env_landing.html', {
                "env": env,
                "env_promote": env_promote,
                "stages": stages,
                "report": report,
                "has_deploy": True,
                "metrics": metrics,
                "alarms": alarms,
                "request_feedback": request_feedback,
                "groups": groups,
                "pinterest": IS_PINTEREST,
            })

        # save preferences
        response.set_cookie(ENV_COOKIE_NAME, genEnvCookie(request, name))
        response.set_cookie(MODE_COOKIE_NAME, showMode)
        response.set_cookie(STATUS_COOKIE_NAME, sortByStatus)

        return response
Example #16
0
    def get(self, request, name, stage):
        # cluster manager
        provider_list = None
        basic_cluster_info = None
        create_new = False
        adv = False
        env = environs_helper.get_env_by_stage(request, name, stage)
        if IS_PINTEREST:
            provider_list = baseimages_helper.get_all_providers(request)
            basic_cluster_info = clusters_helper.get_cluster(request, env.get('clusterName'))
            if basic_cluster_info:
                base_image_id = basic_cluster_info.get('baseImageId')
                base_image = baseimages_helper.get_by_id(request, base_image_id)
                if base_image.get('abstract_name') != 'CMP-DOCKER':
                    adv = True

            params = request.GET
            if params.get('adv'):
                adv = params.get('adv')
            if params.get('create_new'):
                create_new = params.get('create_new')

        if request.is_ajax():
            # return data for ajax calls
            hosts = environs_helper.get_env_capacity(request, name, stage, capacity_type="HOST")
            groups = common.get_non_cmp_group(request, name, stage)
            html = render_to_string("configs/capacity.tmpl", {
                "env": env,
                "hosts": ','.join(hosts),
                "groups": ','.join(groups),
                "csrf_token": get_token(request),
                'is_pinterest': IS_PINTEREST,
                'provider_list': provider_list,
                'basic_cluster_info': basic_cluster_info,
                'adv': adv,
                'create_new': create_new,
            })
            return HttpResponse(json.dumps({'html': html}), content_type="application/json")

        # otherwise, return a page
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        hosts = environs_helper.get_env_capacity(request, name, stage, capacity_type="HOST")
        groups = common.get_non_cmp_group(request, name, stage)
        return render(request, 'configs/capacity.html', {
            "envs": envs,
            "env": env,
            "stages": stages,
            "hosts": ','.join(hosts),
            "groups": ','.join(groups),
            'is_pinterest': IS_PINTEREST,
            'provider_list': provider_list,
            'basic_cluster_info': basic_cluster_info,
            'adv': adv,
            'create_new': create_new,
        })
Example #17
0
def get_cluster(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    provider_list = baseimages_helper.get_all_providers(request)
    basic_cluster_info = clusters_helper.get_cluster(request, name, stage)

    return render(request, 'clusters/clusters.html', {
        'env': env,
        'stages': stages,
        'provider_list': provider_list,
        'basic_cluster_info': basic_cluster_info,
    })
Example #18
0
def get_cluster(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    provider_list = baseimages_helper.get_all_providers(request)
    basic_cluster_info = clusters_helper.get_cluster(request, name, stage)

    return render(request, 'clusters/clusters.html', {
        'env': env,
        'stages': stages,
        'provider_list': provider_list,
        'basic_cluster_info': basic_cluster_info,
    })
Example #19
0
def get_new_cmp_cluster(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    provider_list = baseimages_helper.get_all_providers(request)
    base_images = baseimages_helper.get_by_name(request, "CMP-DOCKER")
    html = render_to_string('clusters/cmp_cluster_creation.tmpl', {
        'env': env,
        'stages': stages,
        'provider_list': provider_list,
        'base_images': base_images,
        'csrf_token': get_token(request),
    })
    return HttpResponse(json.dumps(html), content_type="application/json")
Example #20
0
def get_all_hosts(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    progress = deploys_helper.update_progress(request, name, stage)
    agents_wrapper = agent_report.gen_agent_by_deploy(progress, env['deployId'],
                                                      TOTAL_HOST_REPORT)
    title = "All hosts"

    return render(request, 'environs/env_hosts.html', {
        "env": env,
        "stages": stages,
        "agents_wrapper": agents_wrapper,
        "title": title,
    })
Example #21
0
def get_new_cmp_cluster(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    provider_list = baseimages_helper.get_all_providers(request)
    base_images = baseimages_helper.get_by_name(request, "CMP-DOCKER")
    html = render_to_string('clusters/cmp_cluster_creation.tmpl', {
        'env': env,
        'envs': envs,
        'stages': stages,
        'provider_list': provider_list,
        'base_images': base_images,
        'csrf_token': get_token(request),
    })
    return HttpResponse(json.dumps(html), content_type="application/json")
Example #22
0
def get_basic_cluster(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    provider_list = baseimages_helper.get_all_providers(request)
    basic_cluster_info = clusters_helper.get_cluster(request, env.get('clusterName'))
    html = render_to_string('clusters/clusters.tmpl', {
        'env': env,
        'envs': envs,
        'stages': stages,
        'provider_list': provider_list,
        'basic_cluster_info': basic_cluster_info,
        'csrf_token': get_token(request),
    })
    return HttpResponse(json.dumps(html), content_type="application/json")
Example #23
0
def get_cluster(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    provider_list = baseimages_helper.get_all_providers(request)
    basic_cluster_info = clusters_helper.get_cluster(request, name, stage)
    hosts_in_clusters = clusters_helper.get_hosts(request, env['envName'], env['stageName'], [])
    host_ids = ','.join(hosts_in_clusters)

    return render(request, 'clusters/clusters.html', {
        'env': env,
        'stages': stages,
        'provider_list': provider_list,
        'basic_cluster_info': basic_cluster_info,
        'host_ids': host_ids,
    })
Example #24
0
def get_provisioning_hosts(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    progress = deploys_helper.update_progress(request, name, stage)
    agents_wrapper = agent_report.gen_agent_by_deploy(progress,
                                                      env['deployId'],
                                                      PROVISION_HOST_REPORT)
    title = "Provisioning hosts"

    return render(
        request, 'environs/env_hosts.html', {
            "env": env,
            "stages": stages,
            "agents_wrapper": agents_wrapper,
            "title": title,
        })
Example #25
0
def remove_stage(request, name, stage):
    # TODO so we need to make sure the capacity is empty???
    environs_helper.delete_env(request, name, stage)

    envs = environs_helper.get_all_env_stages(request, name)

    response = redirect('/env/' + name)

    if len(envs) == 0:
        cookie_response = removeEnvCookie(request, name)
        if not cookie_response:
            response.delete_cookie(ENV_COOKIE_NAME)
        else:
            response.set_cookie(ENV_COOKIE_NAME, cookie_response)

    return response
Example #26
0
def rollback(request, name, stage):
    query_dict = request.GET
    to_deploy_id = query_dict.get('to_deploy_id', None)
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    result = deploys_helper.get_all(request, envId=[env['id']], pageIndex=1,
                                    pageSize=DEFAULT_ROLLBACK_DEPLOY_NUM)
    deploys = result.get("deploys")

    # remove the first deploy if exists
    if deploys:
        deploys.pop(0)

    # append the build info
    deploy_summaries = []
    branch = None
    commit = None
    build_id = None
    for deploy in deploys:
        build_info = builds_helper.get_build_and_tag(request, deploy['buildId'])
        build = build_info["build"]
        tag = build_info.get("tag", None)
        summary = {}
        summary['deploy'] = deploy
        summary['build'] = build
        summary['tag'] = tag
        if not to_deploy_id and deploy['state'] == 'SUCCEEDED':
            to_deploy_id = deploy['id']
        if to_deploy_id and to_deploy_id == deploy['id']:
            branch = build['branch']
            commit = build['commitShort']
            build_id = build['id']
        deploy_summaries.append(summary)

    html = render_to_string("environs/env_rollback.html", {
        "envs": envs,
        "stages": stages,
        "envs": envs,
        "env": env,
        "deploy_summaries": deploy_summaries,
        "to_deploy_id": to_deploy_id,
        "branch": branch,
        "commit": commit,
        "build_id": build_id,
        "csrf_token": get_token(request),
    })
    return HttpResponse(html)
Example #27
0
    def get(self, request, name, stage, hostname):
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        duplicate_stage = ''
        for stage_name in stages:
            if stage_name != stage:
                hosts = environs_helper.get_env_capacity(request,
                                                         name,
                                                         stage_name,
                                                         capacity_type="HOST")
                if hostname in hosts:
                    duplicate_stage = stage_name

        hosts = environ_hosts_helper.get_host_by_env_and_hostname(
            request, name, stage, hostname)
        host_id = get_host_id(hosts)
        show_terminate = get_show_terminate(hosts)
        show_warning_message = not show_terminate
        asg = get_asg_name(request, hosts)
        is_protected = False
        if asg:
            is_protected = autoscaling_groups_helper.is_hosts_protected(
                request, asg, [host_id])

        agent_wrappers, is_unreachable = get_agent_wrapper(request, hostname)
        host_details = get_host_details(host_id)

        return render(
            request, 'hosts/host_details.html', {
                'env_name': name,
                'stage_name': stage,
                'hostname': hostname,
                'hosts': hosts,
                'host_id': host_id,
                'agent_wrappers': agent_wrappers,
                'show_terminate': show_terminate,
                'show_warning_message': show_warning_message,
                'show_force_terminate': IS_PINTEREST,
                'asg_group': asg,
                'is_unreachable': is_unreachable,
                'pinterest': IS_PINTEREST,
                'host_information_url': CMDB_UI_HOST,
                'instance_protected': is_protected,
                'host_details': host_details,
                'duplicate_stage': duplicate_stage,
            })
Example #28
0
    def get(self, request, name, stage):
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        context = {"envs": envs, "env": env, "stages": stages}
        deploy_constraint = environ_hosts_helper.get_deploy_constraint(
            request, name, stage)
        if deploy_constraint:
            max_parallel = deploy_constraint.get("maxParallel", None)
            tag_name = deploy_constraint.get("constraintKey", None)
            context["tag_name"] = tag_name
            context["max_parallel"] = max_parallel
            context["state"] = deploy_constraint.get("state", "UNKNOWN")
            context["show_remove_btn"] = True
        else:
            context["show_remove_btn"] = False

        return render(request, 'environs/env_host_tags.html', context)
Example #29
0
def get_failed_hosts(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    progress = deploys_helper.update_progress(request, name, stage)
    agents_wrapper = agent_report.gen_agent_by_deploy(progress,
                                                      env['deployId'],
                                                      FAILED_HOST_REPORT)
    title = "Failed Hosts"

    return render(
        request, 'environs/env_hosts.html', {
            "env": env,
            "stages": stages,
            "agents_wrapper": agents_wrapper,
            "title": title,
            "is_retryable": True
        })
Example #30
0
def get_basic_cluster(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    provider_list = baseimages_helper.get_all_providers(request)
    basic_cluster_info = clusters_helper.get_cluster(request, env.get("clusterName"))
    html = render_to_string(
        "clusters/clusters.tmpl",
        {
            "env": env,
            "envs": envs,
            "stages": stages,
            "provider_list": provider_list,
            "basic_cluster_info": basic_cluster_info,
            "csrf_token": get_token(request),
        },
    )
    return HttpResponse(json.dumps(html), content_type="application/json")
Example #31
0
def rollback(request, name, stage):
    query_dict = request.GET
    to_deploy_id = query_dict.get('to_deploy_id', None)
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    result = deploys_helper.get_all(request,
                                    envId=[env['id']],
                                    pageIndex=1,
                                    pageSize=DEFAULT_ROLLBACK_DEPLOY_NUM)
    deploys = result.get("deploys")

    # remove the first deploy if exists
    if deploys:
        deploys.pop(0)

    # append the build info
    deploy_summaries = []
    branch = None
    commit = None
    build_id = None
    for deploy in deploys:
        build = builds_helper.get_build(request, deploy['buildId'])
        summary = {}
        summary['deploy'] = deploy
        summary['build'] = build
        if not to_deploy_id and deploy['state'] == 'SUCCEEDED':
            to_deploy_id = deploy['id']
        if to_deploy_id and to_deploy_id == deploy['id']:
            branch = build['branch']
            commit = build['commitShort']
            build_id = build['id']
        deploy_summaries.append(summary)

    html = render_to_string(
        "environs/env_rollback.html", {
            "stages": stages,
            "envs": envs,
            "env": env,
            "deploy_summaries": deploy_summaries,
            "to_deploy_id": to_deploy_id,
            "branch": branch,
            "commit": commit,
            "build_id": build_id,
            "csrf_token": get_token(request),
        })
    return HttpResponse(html)
Example #32
0
def get_new_cmp_cluster(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    provider_list = baseimages_helper.get_all_providers(request)
    base_images = baseimages_helper.get_by_name(request, CMP_DOCKER_IMAGE)
    html = render_to_string(
        "clusters/cmp_cluster_creation.tmpl",
        {
            "env": env,
            "envs": envs,
            "stages": stages,
            "provider_list": provider_list,
            "base_images": base_images,
            "csrf_token": get_token(request),
        },
    )
    return HttpResponse(json.dumps(html), content_type="application/json")
Example #33
0
def get_cluster(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    provider_list = baseimages_helper.get_all_providers(request)
    basic_cluster_info = clusters_helper.get_cluster(request, name, stage)
    hosts_in_clusters = clusters_helper.get_hosts(request, env['envName'],
                                                  env['stageName'], [])
    host_ids = ','.join(hosts_in_clusters)

    return render(
        request, 'clusters/clusters.html', {
            'env': env,
            'stages': stages,
            'provider_list': provider_list,
            'basic_cluster_info': basic_cluster_info,
            'host_ids': host_ids,
        })
Example #34
0
def get_cluster(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    provider_list = baseimages_helper.get_all_providers(request)
    cluster_provider = clusters_helper.get_cluster_provider(request, name, stage)
    if cluster_provider == 'null':
        cluster_provider = None
    basic_cluster_info = clusters_helper.get_cluster(request, name, stage)
    advanced_cluster_info = clusters_helper.get_advanced_cluster(request, name, stage, cluster_provider)

    return render(request, 'clusters/clusters.html', {
        'env': env,
        'stages': stages,
        'provider_list': provider_list,
        'cluster_provider': cluster_provider,
        'basic_cluster_info': basic_cluster_info,
        'advanced_cluster_info': advanced_cluster_info,
    })
Example #35
0
def get_hosts(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    agents = agents_helper.get_agents(request, env['envName'], env['stageName'])
    title = "All hosts"

    agents_wrapper = {}
    for agent in agents:
        if agent['deployId'] not in agents_wrapper:
            agents_wrapper[agent['deployId']] = []
        agents_wrapper[agent['deployId']].append(agent)

    return render(request, 'environs/env_hosts.html', {
        "env": env,
        "stages": stages,
        "agents_wrapper": agents_wrapper,
        "title": title,
    })
Example #36
0
def get_hosts_by_deploy(request, name, stage, deploy_id):
    hostStageString = request.GET.get('hostStage')
    if hostStageString is None:
        hostStage = TOTAL_ALIVE_HOST_REPORT
    else:
        hostStage = hostStageString
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    progress = deploys_helper.update_progress(request, name, stage)
    agents_wrapper = agent_report.gen_agent_by_deploy(progress, deploy_id,
                                                      ALIVE_STAGE_HOST_REPORT, hostStage)
    title = "All hosts with deploy " + deploy_id

    return render(request, 'environs/env_hosts.html', {
        "env": env,
        "stages": stages,
        "agents_wrapper": agents_wrapper,
        "title": title,
    })
Example #37
0
def get_failed_hosts(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    progress = deploys_helper.update_progress(request, name, stage)
    agents_wrapper = agent_report.gen_agent_by_deploy(progress, env['deployId'],
                                                      FAILED_HOST_REPORT)
    failed_hosts = [agent['hostId'] for agent in agents_wrapper[env['deployId']]]
    host_ids = ",".join(failed_hosts)
    title = "Failed Hosts"

    return render(request, 'environs/env_hosts.html', {
        "env": env,
        "stages": stages,
        "agents_wrapper": agents_wrapper,
        "title": title,
        "is_retryable": True,
        "host_ids": host_ids,
        "pinterest": IS_PINTEREST,
    })
Example #38
0
    def get(self, request, name, stage):
        if request.is_ajax():
            env = environs_helper.get_env_by_stage(request, name, stage)
            webhooks = environs_helper.get_env_hooks_config(request, name, stage)
            html = render_to_string('configs/webhooks_config.tmpl', {
                "env": env,
                "webhooks": webhooks,
                "csrf_token": get_token(request),
            })
            return HttpResponse(json.dumps({'html': html}), content_type="application/json")

        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        webhooks = environs_helper.get_env_hooks_config(request, name, stage)
        return render(request, 'configs/webhooks_config.html', {
            "env": env,
            "stages": stages,
            "webhooks": webhooks,
        })
Example #39
0
    def get(self, request, name, stage):
        if request.is_ajax():
            env = environs_helper.get_env_by_stage(request, name, stage)
            webhooks = environs_helper.get_env_hooks_config(request, name, stage)
            html = render_to_string('configs/webhooks_config.tmpl', {
                "env": env,
                "webhooks": webhooks,
                "csrf_token": get_token(request),
            })
            return HttpResponse(json.dumps({'html': html}), content_type="application/json")

        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        webhooks = environs_helper.get_env_hooks_config(request, name, stage)
        return render(request, 'configs/webhooks_config.html', {
            "env": env,
            "stages": stages,
            "webhooks": webhooks,
        })
Example #40
0
def get_hosts(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    agents = agents_helper.get_agents(request, env['envName'],
                                      env['stageName'])
    title = "All hosts"

    agents_wrapper = {}
    for agent in agents:
        if agent['deployId'] not in agents_wrapper:
            agents_wrapper[agent['deployId']] = []
        agents_wrapper[agent['deployId']].append(agent)

    return render(
        request, 'environs/env_hosts.html', {
            "env": env,
            "stages": stages,
            "agents_wrapper": agents_wrapper,
            "title": title,
        })
Example #41
0
def get_cluster(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    provider_list = baseimages_helper.get_all_providers(request)
    cluster_provider = clusters_helper.get_cluster_provider(
        request, name, stage)
    if cluster_provider == 'null':
        cluster_provider = None
    basic_cluster_info = clusters_helper.get_cluster(request, name, stage)
    advanced_cluster_info = clusters_helper.get_advanced_cluster(
        request, name, stage, cluster_provider)

    return render(
        request, 'clusters/clusters.html', {
            'env': env,
            'stages': stages,
            'provider_list': provider_list,
            'cluster_provider': cluster_provider,
            'basic_cluster_info': basic_cluster_info,
            'advanced_cluster_info': advanced_cluster_info,
        })
Example #42
0
def get_hosts_by_deploy(request, name, stage, deploy_id):
    hostStageString = request.GET.get('hostStage')
    if hostStageString is None:
        hostStage = TOTAL_ALIVE_HOST_REPORT
    else:
        hostStage = hostStageString
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    progress = deploys_helper.update_progress(request, name, stage)
    agents_wrapper = agent_report.gen_agent_by_deploy(progress, deploy_id,
                                                      ALIVE_STAGE_HOST_REPORT,
                                                      hostStage)
    title = "All hosts with deploy " + deploy_id

    return render(
        request, 'environs/env_hosts.html', {
            "env": env,
            "stages": stages,
            "agents_wrapper": agents_wrapper,
            "title": title,
        })
Example #43
0
    def get(self, request, name, stage, hostname):
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        duplicate_stage = ''
        for stage_name in stages:
            if stage_name != stage:
                hosts = environs_helper.get_env_capacity(request, name, stage_name, capacity_type="HOST")
                if hostname in hosts:
                    duplicate_stage = stage_name

        hosts = environ_hosts_helper.get_host_by_env_and_hostname(request, name, stage, hostname)
        host_id = get_host_id(hosts)
        show_terminate = get_show_terminate(hosts)
        show_warning_message = not show_terminate
        asg = get_asg_name(request, hosts)
        is_protected = False
        if asg:
            is_protected = autoscaling_groups_helper.is_hosts_protected(request, asg, [host_id])

        agent_wrappers, is_unreachable = get_agent_wrapper(request, hostname)
        host_details = get_host_details(host_id)

        return render(request, 'hosts/host_details.html', {
            'env_name': name,
            'stage_name': stage,
            'hostname': hostname,
            'hosts': hosts,
            'host_id': host_id,
            'agent_wrappers': agent_wrappers,
            'show_terminate': show_terminate,
            'show_warning_message': show_warning_message,
            'show_force_terminate': IS_PINTEREST,
            'asg_group': asg,
            'is_unreachable': is_unreachable,
            'pinterest': IS_PINTEREST,
            'host_information_url': CMDB_UI_HOST,
            'instance_protected': is_protected,
            'host_details': host_details,
            'duplicate_stage': duplicate_stage,
        })
    def get(self, request, name, stage):
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        context = {
            "envs": envs,
            "env": env,
            "stages": stages
        }
        deploy_constraint = environ_hosts_helper.get_deploy_constraint(request, name, stage)
        if deploy_constraint:
            max_parallel = deploy_constraint.get("maxParallel", None)
            tag_name = deploy_constraint.get("constraintKey", None)
            context["tag_name"] = tag_name
            context["max_parallel"] = max_parallel
            context["state"] = deploy_constraint.get("state", "UNKNOWN")
            context["constraint_type"] = deploy_constraint.get("constraintType", environs_helper.DEPLOY_CONSTRAINT_TYPES[0])
            context["show_remove_btn"] = True
        else:
            context["show_remove_btn"] = False

        context["constraintTypes"] = environs_helper.DEPLOY_CONSTRAINT_TYPES
        return render(request, 'environs/env_host_tags.html', context)
Example #45
0
def get_failed_hosts(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)
    progress = deploys_helper.update_progress(request, name, stage)
    agents_wrapper = agent_report.gen_agent_by_deploy(progress,
                                                      env['deployId'],
                                                      FAILED_HOST_REPORT)
    failed_hosts = [
        agent['hostId'] for agent in agents_wrapper[env['deployId']]
    ]
    host_ids = ",".join(failed_hosts)
    title = "Failed Hosts"

    return render(
        request, 'environs/env_hosts.html', {
            "env": env,
            "stages": stages,
            "agents_wrapper": agents_wrapper,
            "title": title,
            "is_retryable": True,
            "host_ids": host_ids,
            "pinterest": IS_PINTEREST,
        })
Example #46
0
    def get(self, request, name, stage):
        if request.is_ajax():
            env = environs_helper.get_env_by_stage(request, name, stage)
            html = render_to_string('configs/schedule_config.tmpl', {
                "env": env,
                "csrf_token": get_token(request),
            })
            return HttpResponse(json.dumps({'html': html}), content_type="application/json")

        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        agent_count = agents_helper.get_agents_total_by_env(request, env["id"])
        schedule_id = env.get('scheduleId', None);
        if schedule_id != None: 
            schedule = schedules_helper.get_schedule(request, name, stage, schedule_id)
        else:
            schedule = None
        max_parallel_number = env["maxParallel"];
        return render(request, 'configs/schedule_config.html', {
            "env": env,
            "schedule": schedule,
            "agent_count": agent_count,
            "max_parallel_number": max_parallel_number,
        })
Example #47
0
    def get(self, request, name, stage):
        # cluster manager
        provider_list = None
        basic_cluster_info = None
        create_new = False
        adv = False
        env = environs_helper.get_env_by_stage(request, name, stage)
        cluster_name = env.get('clusterName')
        if IS_PINTEREST:
            provider_list = baseimages_helper.get_all_providers(request)
            basic_cluster_info = clusters_helper.get_cluster(request, cluster_name)
            if basic_cluster_info:
                base_image_id = basic_cluster_info.get('baseImageId')
                base_image = baseimages_helper.get_by_id(request, base_image_id)
                asg_cluster = autoscaling_groups_helper.get_group_info(request, cluster_name)
                basic_cluster_info['asg_info'] = asg_cluster

            params = request.GET
            if params.get('adv'):
                adv = params.get('adv')
            if params.get('create_new'):
                create_new = params.get('create_new')

        if request.is_ajax():
            # return data for ajax calls
            hosts = environs_helper.get_env_capacity(request, name, stage, capacity_type="HOST")
            groups = common.get_env_groups(request, name, stage)
            if cluster_name in groups:
                groups.remove(cluster_name)
            info = {
                "env": env,
                "hosts": hosts,
                "groups": groups,
                "csrf_token": get_token(request),
                'is_pinterest': IS_PINTEREST,
                'provider_list': provider_list,
                'basic_cluster_info': basic_cluster_info,
                'adv': adv,
                'create_new': create_new,
            }
            return HttpResponse(json.dumps(info), content_type="application/json")

        # otherwise, return a page
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        hosts = environs_helper.get_env_capacity(request, name, stage, capacity_type="HOST")
        groups = common.get_env_groups(request, name, stage)
        if cluster_name in groups:
            groups.remove(cluster_name)
        data = {
            "envs": envs,
            "env": env,
            "stages": stages,
            "hosts": hosts,
            "groups": groups,
            'is_pinterest': IS_PINTEREST,
            'provider_list': provider_list,
            'basic_cluster_info': basic_cluster_info,
            'adv': adv,
            'create_new': create_new
        }
        data['info'] = json.dumps(data)
        return render(request, 'configs/capacity.html', data)
Example #48
0
def get_env_deploys(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)

    index = int(request.GET.get('page_index', '1'))
    size = int(request.GET.get('page_size', DEFAULT_PAGE_SIZE))
    from_date = request.GET.get('from_date', None)
    from_time = request.GET.get('from_time', None)
    to_date = request.GET.get('to_date', None)
    to_time = request.GET.get('to_time', None)
    commit = request.GET.get('commit', None)
    repo = request.GET.get('repo', None)
    branch = request.GET.get('branch', None)
    reverse_date = request.GET.get('reverse_date', None)
    operator = request.GET.get('operator', None)

    filter, filter_title, query_string = \
        _gen_deploy_query_filter(request, from_date, from_time, to_date, to_time, size,
                                 reverse_date, operator, commit, repo, branch)
    if filter is None:
        return render(
            request, 'environs/env_history.html', {
                "env": env,
                "stages": stages,
                "deploy_summaries": [],
                "filter_title": filter_title,
                "pageIndex": index,
                "pageSize": size,
                "from_date": from_date,
                "from_time": from_time,
                "to_date": to_date,
                "to_time": to_time,
                "commit": commit,
                "repo": repo,
                "branch": branch,
                "reverse_date": reverse_date,
                "operator": operator,
                'pageRange': range(0),
                "prevPageIndex": 0,
                "nextPageIndex": 0,
                "query_string": query_string,
                "pinterest": IS_PINTEREST
            })

    filter['envId'] = [env['id']]
    filter['pageIndex'] = index
    filter['pageSize'] = size
    result = deploys_helper.get_all(request, **filter)

    deploy_summaries = _gen_deploy_summary(request,
                                           result['deploys'],
                                           for_env=env)

    page_range, prevPageIndex, nextPageIndex = _compute_range(
        result['total'], index, size, DEFAULT_TOTAL_PAGES)

    return render(
        request, 'environs/env_history.html', {
            "env": env,
            "stages": stages,
            "deploy_summaries": deploy_summaries,
            "filter_title": filter_title,
            "pageIndex": index,
            "pageSize": size,
            "from_date": from_date,
            "from_time": from_time,
            "to_date": to_date,
            "to_time": to_time,
            "commit": commit,
            "repo": repo,
            "branch": branch,
            "reverse_date": reverse_date,
            "operator": operator,
            'pageRange': page_range,
            "prevPageIndex": prevPageIndex,
            "nextPageIndex": nextPageIndex,
            "query_string": query_string,
            "pinterest": IS_PINTEREST
        })
Example #49
0
    def get(self, request, name, stage):
        # cluster manager
        provider_list = None
        basic_cluster_info = None
        create_new = False
        adv = False
        env = environs_helper.get_env_by_stage(request, name, stage)
        cluster_name = env.get('clusterName')
        if IS_PINTEREST:
            provider_list = baseimages_helper.get_all_providers(request)
            basic_cluster_info = clusters_helper.get_cluster(request, cluster_name)
            if basic_cluster_info:
                base_image_id = basic_cluster_info.get('baseImageId')
                base_image = baseimages_helper.get_by_id(request, base_image_id)
                asg_cluster = autoscaling_groups_helper.get_group_info(request, cluster_name)
                basic_cluster_info['asg_info'] = asg_cluster
                basic_cluster_info['base_image_info'] = base_image

            params = request.GET
            if params.get('adv'):
                adv = params.get('adv')
            if params.get('create_new'):
                create_new = params.get('create_new')

        if request.is_ajax():
            # return data for ajax calls
            hosts = environs_helper.get_env_capacity(request, name, stage, capacity_type="HOST")
            groups = common.get_env_groups(request, name, stage)
            if cluster_name in groups:
                groups.remove(cluster_name)
            info = {
                "env": env,
                "hosts": hosts,
                "groups": groups,
                "csrf_token": get_token(request),
                'is_pinterest': IS_PINTEREST,
                'provider_list': provider_list,
                'basic_cluster_info': basic_cluster_info,
                'adv': adv,
                'create_new': create_new,
            }
            return HttpResponse(json.dumps(info), content_type="application/json")

        # otherwise, return a page
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        hosts = environs_helper.get_env_capacity(request, name, stage, capacity_type="HOST")
        groups = common.get_env_groups(request, name, stage)
        if cluster_name in groups:
            groups.remove(cluster_name)
        data = {
            "envs": envs,
            "env": env,
            "stages": stages,
            "hosts": hosts,
            "groups": groups,
            'is_pinterest': IS_PINTEREST,
            'provider_list': provider_list,
            'basic_cluster_info': basic_cluster_info,
            'adv': adv,
            'create_new': create_new
        }
        data['info'] = json.dumps(data)
        return render(request, 'configs/capacity.html', data)
Example #50
0
    def get(self, request, name, stage=None):
        envs = environs_helper.get_all_env_stages(request, name)

        if len(envs) == 0:
            return redirect('/')

        stages, env = common.get_all_stages(envs, stage)
        env_promote = environs_helper.get_env_promotes_config(
            request, name, env['stageName'])
        stage = env['stageName']
        username = request.teletraan_user_id.name
        request_feedback = check_feedback_eligible(request, username)
        groups = environs_helper.get_env_capacity(request,
                                                  name,
                                                  stage,
                                                  capacity_type="GROUP")
        metrics = environs_helper.get_env_metrics_config(request, name, stage)
        alarms = environs_helper.get_env_alarms_config(request, name, stage)
        basic_cluster_info = clusters_helper.get_cluster(request, name, stage)

        if not env['deployId']:
            capacity_hosts = deploys_helper.get_missing_hosts(
                request, name, stage)
            provisioning_hosts = environ_hosts_helper.get_hosts(
                request, name, stage)
            response = render(
                request, 'environs/env_landing.html', {
                    "env": env,
                    "env_promote": env_promote,
                    "stages": stages,
                    "metrics": metrics,
                    "alarms": alarms,
                    "request_feedback": request_feedback,
                    "groups": groups,
                    "capacity_hosts": capacity_hosts,
                    "provisioning_hosts": provisioning_hosts,
                    "basic_cluster_info": basic_cluster_info,
                    "pinterest": IS_PINTEREST,
                })
            showMode = 'complete'
            sortByStatus = 'true'
        else:
            # Get deploy progress
            progress = deploys_helper.update_progress(request, name, stage)
            showMode = _fetch_param_with_cookie(request, 'showMode',
                                                MODE_COOKIE_NAME, 'complete')
            sortByStatus = _fetch_param_with_cookie(request, 'sortByStatus',
                                                    STATUS_COOKIE_NAME, 'true')
            report = agent_report.gen_report(request,
                                             env,
                                             progress,
                                             sortByStatus=sortByStatus)
            report.showMode = showMode
            report.sortByStatus = sortByStatus
            response = render(
                request, 'environs/env_landing.html', {
                    "env": env,
                    "env_promote": env_promote,
                    "stages": stages,
                    "report": report,
                    "has_deploy": True,
                    "metrics": metrics,
                    "alarms": alarms,
                    "request_feedback": request_feedback,
                    "groups": groups,
                    "basic_cluster_info": basic_cluster_info,
                    "pinterest": IS_PINTEREST,
                })

        # save preferences
        response.set_cookie(ENV_COOKIE_NAME, genEnvCookie(request, name))
        response.set_cookie(MODE_COOKIE_NAME, showMode)
        response.set_cookie(STATUS_COOKIE_NAME, sortByStatus)

        return response
Example #51
0
    def get(self, request, name, stage=None):
        envs = environs_helper.get_all_env_stages(request, name)

        if len(envs) == 0:
            return redirect('/')

        stages, env = common.get_all_stages(envs, stage)
        env_promote = environs_helper.get_env_promotes_config(request, name, env['stageName'])
        stage = env['stageName']
        username = request.teletraan_user_id.name
        request_feedback = check_feedback_eligible(request, username)
        groups = environs_helper.get_env_capacity(request, name, stage, capacity_type="GROUP")
        metrics = environs_helper.get_env_metrics_config(request, name, stage)
        alarms = environs_helper.get_env_alarms_config(request, name, stage)
        basic_cluster_info = None
        if IS_PINTEREST:
            basic_cluster_info = clusters_helper.get_cluster(request, name, stage)

        if not env['deployId']:
            capacity_hosts = deploys_helper.get_missing_hosts(request, name, stage)
            provisioning_hosts = environ_hosts_helper.get_hosts(request, name, stage)
            if IS_PINTEREST:
                basic_cluster_info = clusters_helper.get_cluster(request, env['envName'], env['stageName'])
                if basic_cluster_info and basic_cluster_info.get('capacity'):
                    hosts_in_cluster = clusters_helper.get_host_names(request, env['envName'], env['stageName'])
                    num_to_fake = basic_cluster_info.get('capacity') - len(hosts_in_cluster)
                    for i in range(num_to_fake):
                        faked_host = {}
                        faked_host['hostName'] = 'UNKNOWN'
                        faked_host['hostId'] = 'UNKNOWN'
                        faked_host['state'] = 'PROVISIONED'
                        provisioning_hosts.append(faked_host)

            response = render(request, 'environs/env_landing.html', {
                "env": env,
                "env_promote": env_promote,
                "stages": stages,
                "metrics": metrics,
                "alarms": alarms,
                "request_feedback": request_feedback,
                "groups": groups,
                "capacity_hosts": capacity_hosts,
                "provisioning_hosts": provisioning_hosts,
                "basic_cluster_info": basic_cluster_info,
                "pinterest": IS_PINTEREST,
            })
            showMode = 'complete'
            sortByStatus = 'true'
        else:
            # Get deploy progress
            progress = deploys_helper.update_progress(request, name, stage)
            showMode = _fetch_param_with_cookie(
                request, 'showMode', MODE_COOKIE_NAME, 'complete')
            sortByStatus = _fetch_param_with_cookie(
                request, 'sortByStatus', STATUS_COOKIE_NAME, 'true')
            report = agent_report.gen_report(request, env, progress, sortByStatus=sortByStatus)
            report.showMode = showMode
            report.sortByStatus = sortByStatus
            response = render(request, 'environs/env_landing.html', {
                "env": env,
                "env_promote": env_promote,
                "stages": stages,
                "report": report,
                "has_deploy": True,
                "metrics": metrics,
                "alarms": alarms,
                "request_feedback": request_feedback,
                "groups": groups,
                "basic_cluster_info": basic_cluster_info,
                "pinterest": IS_PINTEREST,
            })

        # save preferences
        response.set_cookie(ENV_COOKIE_NAME, genEnvCookie(request, name))
        response.set_cookie(MODE_COOKIE_NAME, showMode)
        response.set_cookie(STATUS_COOKIE_NAME, sortByStatus)

        return response
Example #52
0
    def get(self, request, name, stage):
        # cluster manager
        provider_list = None
        basic_cluster_info = None
        create_new = False
        adv = False
        env = environs_helper.get_env_by_stage(request, name, stage)
        if IS_PINTEREST:
            provider_list = baseimages_helper.get_all_providers(request)
            basic_cluster_info = clusters_helper.get_cluster(
                request, env.get('clusterName'))
            if basic_cluster_info:
                base_image_id = basic_cluster_info.get('baseImageId')
                base_image = baseimages_helper.get_by_id(
                    request, base_image_id)
                if base_image.get('abstract_name') != 'CMP-DOCKER':
                    adv = True

            params = request.GET
            if params.get('adv'):
                adv = params.get('adv')
            if params.get('create_new'):
                create_new = params.get('create_new')

        if request.is_ajax():
            # return data for ajax calls
            hosts = environs_helper.get_env_capacity(request,
                                                     name,
                                                     stage,
                                                     capacity_type="HOST")
            groups = common.get_non_cmp_group(request, name, stage)
            html = render_to_string(
                "configs/capacity.tmpl", {
                    "env": env,
                    "hosts": ','.join(hosts),
                    "groups": ','.join(groups),
                    "csrf_token": get_token(request),
                    'is_pinterest': IS_PINTEREST,
                    'provider_list': provider_list,
                    'basic_cluster_info': basic_cluster_info,
                    'adv': adv,
                    'create_new': create_new,
                })
            return HttpResponse(json.dumps({'html': html}),
                                content_type="application/json")

        # otherwise, return a page
        envs = environs_helper.get_all_env_stages(request, name)
        stages, env = common.get_all_stages(envs, stage)
        hosts = environs_helper.get_env_capacity(request,
                                                 name,
                                                 stage,
                                                 capacity_type="HOST")
        groups = common.get_non_cmp_group(request, name, stage)
        return render(
            request, 'configs/capacity.html', {
                "envs": envs,
                "env": env,
                "stages": stages,
                "hosts": ','.join(hosts),
                "groups": ','.join(groups),
                'is_pinterest': IS_PINTEREST,
                'provider_list': provider_list,
                'basic_cluster_info': basic_cluster_info,
                'adv': adv,
                'create_new': create_new,
            })
Example #53
0
def get_env_deploys(request, name, stage):
    envs = environs_helper.get_all_env_stages(request, name)
    stages, env = common.get_all_stages(envs, stage)

    index = int(request.GET.get('page_index', '1'))
    size = int(request.GET.get('page_size', DEFAULT_PAGE_SIZE))
    from_date = request.GET.get('from_date', None)
    from_time = request.GET.get('from_time', None)
    to_date = request.GET.get('to_date', None)
    to_time = request.GET.get('to_time', None)
    commit = request.GET.get('commit', None)
    repo = request.GET.get('repo', None)
    branch = request.GET.get('branch', None)
    reverse_date = request.GET.get('reverse_date', None)
    operator = request.GET.get('operator', None)

    filter, filter_title, query_string = \
        _gen_deploy_query_filter(request, from_date, from_time, to_date, to_time, size,
                                 reverse_date, operator, commit, repo, branch)
    if filter is None:
        return render(request, 'environs/env_history.html', {
            "env": env,
            "stages": stages,
            "deploy_summaries": [],
            "filter_title": filter_title,
            "pageIndex": index,
            "pageSize": size,
            "from_date": from_date,
            "from_time": from_time,
            "to_date": to_date,
            "to_time": to_time,
            "commit": commit,
            "repo": repo,
            "branch": branch,
            "reverse_date": reverse_date,
            "operator": operator,
            'pageRange': range(0),
            "prevPageIndex": 0,
            "nextPageIndex": 0,
            "query_string": query_string,
            "pinterest": IS_PINTEREST
        })

    filter['envId'] = [env['id']]
    filter['pageIndex'] = index
    filter['pageSize'] = size
    result = deploys_helper.get_all(request, **filter)

    deploy_summaries = _gen_deploy_summary(request, result['deploys'], for_env=env)

    page_range, prevPageIndex, nextPageIndex = _compute_range(result['total'], index, size,
                                                              DEFAULT_TOTAL_PAGES)

    return render(request, 'environs/env_history.html', {
        "env": env,
        "stages": stages,
        "deploy_summaries": deploy_summaries,
        "filter_title": filter_title,
        "pageIndex": index,
        "pageSize": size,
        "from_date": from_date,
        "from_time": from_time,
        "to_date": to_date,
        "to_time": to_time,
        "commit": commit,
        "repo": repo,
        "branch": branch,
        "reverse_date": reverse_date,
        "operator": operator,
        'pageRange': page_range,
        "prevPageIndex": prevPageIndex,
        "nextPageIndex": nextPageIndex,
        "query_string": query_string,
        "pinterest": IS_PINTEREST
    })