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, })
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, })
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], })
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), })
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, }, )
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, })
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), })
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)
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, })
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)
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, })
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], })
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, })
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
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, })
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, })
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")
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, })
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")
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")
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, })
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, })
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
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)
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["show_remove_btn"] = True else: context["show_remove_btn"] = False return render(request, 'environs/env_host_tags.html', context)
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 })
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")
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)
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")
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, })
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, })
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, })
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, })
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, })
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, })
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, })
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, })
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, })
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)
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, })
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, })
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)
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 })
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)
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
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
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, })
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 })