def get(self, request, group_name): autoscaling_summary = autoscaling_groups_helper.get_autoscaling_summary( request, group_name) asg_status = autoscaling_summary.get("status", "UNKNOWN") enable_spot = autoscaling_summary.get("enableSpot", False) envs = environs_helper.get_all_envs_by_group(request, group_name) disabled_actions = autoscaling_groups_helper.get_disabled_asg_actions( request, group_name) pas_config = autoscaling_groups_helper.get_pas_config( request, group_name) if "Terminate" in disabled_actions: scaling_down_event_enabled = False else: scaling_down_event_enabled = True group_info = autoscaling_groups_helper.get_group_info( request, group_name) if group_info: launch_config = group_info.get('launchInfo') else: launch_config = None return render( request, 'groups/group_details.html', { "asg_status": asg_status, "enable_spot": enable_spot, "group_name": group_name, "scaling_down_event_enabled": scaling_down_event_enabled, "envs": envs, "group_info": group_info, "launch_config": launch_config, "pas_enabled": pas_config['pas_state'] if pas_config else False, })
def get_asg_config(request, group_name): asg_summary = autoscaling_groups_helper.get_autoscaling_summary(request, group_name) pas_config = autoscaling_groups_helper.get_pas_config(request, group_name) instances = groups_helper.get_group_hosts(request, group_name) group_info = autoscaling_groups_helper.get_group_info(request, group_name) launch_config = group_info.get("launchInfo") group_size = len(instances) policies = autoscaling_groups_helper.TerminationPolicy if asg_summary.get("spotRatio", None): asg_summary["spotRatio"] *= 100 if asg_summary.get("sensitivityRatio", None): asg_summary["sensitivityRatio"] *= 100 scheduled_actions = autoscaling_groups_helper.get_scheduled_actions(request, group_name) time_based_asg = False if len(scheduled_actions) > 0: time_based_asg = True content = render_to_string("groups/asg_config.tmpl", { "group_name": group_name, "asg": asg_summary, "group_size": group_size, "terminationPolicies": policies, "instanceType": launch_config.get("instanceType"), "time_based_asg": time_based_asg, "csrf_token": get_token(request), "pas_config": pas_config, }) return HttpResponse(json.dumps(content), content_type="application/json")
def get_asg_config(request, group_name): asg_summary = autoscaling_groups_helper.get_autoscaling_summary( request, group_name) pas_config = autoscaling_groups_helper.get_pas_config(request, group_name) instances = groups_helper.get_group_hosts(request, group_name) group_info = autoscaling_groups_helper.get_group_info(request, group_name) launch_config = group_info.get("launchInfo") group_size = len(instances) policies = autoscaling_groups_helper.TerminationPolicy if asg_summary.get("spotRatio", None): asg_summary["spotRatio"] *= 100 if asg_summary.get("sensitivityRatio", None): asg_summary["sensitivityRatio"] *= 100 scheduled_actions = autoscaling_groups_helper.get_scheduled_actions( request, group_name) time_based_asg = False if len(scheduled_actions) > 0: time_based_asg = True content = render_to_string( "groups/asg_config.tmpl", { "group_name": group_name, "asg": asg_summary, "group_size": group_size, "terminationPolicies": policies, "instanceType": launch_config.get("instanceType"), "time_based_asg": time_based_asg, "csrf_token": get_token(request), "pas_config": pas_config, }) return HttpResponse(json.dumps(content), content_type="application/json")
def get(self, request, group_name): autoscaling_summary = autoscaling_groups_helper.get_autoscaling_summary(request, group_name) asg_status = autoscaling_summary.get("status", "UNKNOWN") enable_spot = autoscaling_summary.get("enableSpot", False) envs = environs_helper.get_all_envs_by_group(request, group_name) disabled_actions = autoscaling_groups_helper.get_disabled_asg_actions(request, group_name) pas_config = autoscaling_groups_helper.get_pas_config(request, group_name) if "Terminate" in disabled_actions: scaling_down_event_enabled = False else: scaling_down_event_enabled = True group_info = autoscaling_groups_helper.get_group_info(request, group_name) if group_info: launch_config = group_info.get('launchInfo') else: launch_config = None return render(request, 'groups/group_details.html', { "asg_status": asg_status, "enable_spot": enable_spot, "group_name": group_name, "scaling_down_event_enabled": scaling_down_event_enabled, "envs": envs, "group_info": group_info, "launch_config": launch_config, "pas_enabled": pas_config['pas_state'] if pas_config else False, })
def cluster_replacement_progress(request, name, stage): env = environs_helper.get_env_by_stage(request, name, stage) cluster_name = '{}-{}'.format(name, stage) replacement_event = clusters_helper.get_latest_cluster_replacement_progress( request, cluster_name) if not replacement_event: log.info("There is no on-going replacement event for cluster %s." % cluster_name) return HttpResponse("There is no on-going replacement.") # basic_cluster_info = clusters_helper.get_cluster(request, cluster_name) # capacity = basic_cluster_info.get("capacity") # should not respect the cluster capacity here, when min != max, the capacity is not a right number asg_summary = autoscaling_groups_helper.get_autoscaling_summary(request, cluster_name) desired_capacity = None if asg_summary: desired_capacity = asg_summary.get("desiredCapacity") if not desired_capacity: error_msg = "cluster %s has wrong desired_capacity: %s, asg_summary: %s" % \ (cluster_name, desired_capacity, asg_summary) log.error(error_msg) return HttpResponse(error_msg, status=500, content_type="application/json") replacement_progress = get_replacement_summary( request, cluster_name, replacement_event, desired_capacity) html = render_to_string('clusters/replace_progress.tmpl', { "env": env, "replace_progress_report": replacement_progress }) response = HttpResponse(html) return response
def get(self, request, group_name): autoscaling_summary = autoscaling_groups_helper.get_autoscaling_summary(request, group_name) asg_status = autoscaling_summary.get("status", "UNKNOWN") enable_spot = autoscaling_summary.get("enableSpot", False) envs = environs_helper.get_all_envs_by_group(request, group_name) disabled_actions = autoscaling_groups_helper.get_disabled_asg_actions(request, group_name) if "Terminate" in disabled_actions: scaling_down_event_enabled = False else: scaling_down_event_enabled = True group_info = autoscaling_groups_helper.get_group_info(request, group_name) return render(request, 'groups/group_details.html', { "asg_status": asg_status, "enable_spot": enable_spot, "group_name": group_name, "scaling_down_event_enabled": scaling_down_event_enabled, "envs": envs, "group_info": group_info, })
def get(self, request, group_name): autoscaling_summary = autoscaling_groups_helper.get_autoscaling_summary( request, group_name) asg_status = autoscaling_summary.get("status", "UNKNOWN") enable_spot = autoscaling_summary.get("enableSpot", False) envs = environs_helper.get_all_envs_by_group(request, group_name) disabled_actions = autoscaling_groups_helper.get_disabled_asg_actions( request, group_name) if "Terminate" in disabled_actions: scaling_down_event_enabled = False else: scaling_down_event_enabled = True group_info = autoscaling_groups_helper.get_group_info( request, group_name) return render( request, 'groups/group_details.html', { "asg_status": asg_status, "enable_spot": enable_spot, "group_name": group_name, "scaling_down_event_enabled": scaling_down_event_enabled, "envs": envs, "group_info": group_info, })