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(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): 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 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 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): # 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 force_terminate_hosts(request, name, stage): get_params = request.GET post_params = request.POST host_ids = None if 'host_id' in get_params: host_ids = [get_params.get('host_id')] if 'hostIds' in post_params: hosts_str = post_params['hostIds'] host_ids = [x.strip() for x in hosts_str.split(',')] if 'replaceHost' in post_params: replace_host = True else: replace_host = False cluster_name = common.get_cluster_name(request, name, stage) if not cluster_name: groups = environs_helper.get_env_capacity( request, name, stage, capacity_type="GROUP") for group_name in groups: cluster_name = group_name clusters_helper.force_terminate_hosts( request, cluster_name, host_ids, replace_host) return redirect('/env/{}/{}'.format(name, stage))
def force_terminate_hosts(request, name, stage): get_params = request.GET post_params = request.POST host_ids = None if 'host_id' in get_params: host_ids = [get_params.get('host_id')] if 'hostIds' in post_params: hosts_str = post_params['hostIds'] host_ids = [x.strip() for x in hosts_str.split(',')] if 'replaceHost' in post_params: replace_host = True else: replace_host = False cluster_name = common.get_cluster_name(request, name, stage) if not cluster_name: groups = environs_helper.get_env_capacity(request, name, stage, capacity_type="GROUP") for group_name in groups: cluster_name = group_name clusters_helper.force_terminate_hosts(request, cluster_name, host_ids, replace_host) return redirect('/env/{}/{}'.format(name, stage))
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_non_cmp_group(request, name, stage): groups = environs_helper.get_env_capacity(request, name, stage, capacity_type="GROUP") if IS_PINTEREST: basic_cluster_info = clusters_helper.get_cluster(request, name, stage) if basic_cluster_info: cluster_name = get_cluster_name(request, name, stage) groups.remove(cluster_name) return groups
def get_groups(request, name, stage): groups = environs_helper.get_env_capacity(request, name, stage, capacity_type="GROUP") html = render_to_string('groups/simple_groups.tmpl', { "groups": groups, }) return HttpResponse(html)
def get_non_cmp_group(request, name, stage): groups = environs_helper.get_env_capacity(request, name, stage, capacity_type="GROUP") if IS_PINTEREST: basic_cluster_info = clusters_helper.get_cluster(request, name, stage) if basic_cluster_info: cluster_name = get_cluster_name(name, stage) groups.remove(cluster_name) return groups
def get_groups(request, name, stage): groups = environs_helper.get_env_capacity(request, name, stage, capacity_type="GROUP") # Hide cluster group info basic_cluster_info = clusters_helper.get_cluster(request, name, stage) if basic_cluster_info: cluster_name = '{}-{}'.format(name, stage) groups.remove(cluster_name) html = render_to_string('groups/simple_groups.tmpl', { "groups": groups, }) 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, 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_env_groups(request, name, stage): groups = environs_helper.get_env_capacity(request, name, stage, capacity_type="GROUP") return groups
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) 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(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): # 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(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)