def get(self, request, group_name): asg_cluster = autoscaling_groups_helper.get_group_info(request, group_name) appNames = baseimages_helper.get_image_names(request, 'AWS') appNames = sorted(appNames) is_cmp = False if asg_cluster: asg_vm_info = asg_cluster.get("launchInfo") curr_image = None if asg_vm_info: curr_image = baseimages_helper.get_by_provider_name(request, asg_vm_info["imageId"]) if asg_vm_info.get("subnets"): asg_vm_info["subnetArrays"] = asg_vm_info["subnets"].split(',') group_info = asg_cluster.get("groupInfo") group_info = get_group_config_internal(group_info) envs = environs_helper.get_all_envs_by_group(request, group_name) for env in envs: basic_cluster_info = clusters_helper.get_cluster(request, env.get('clusterName')) if basic_cluster_info: is_cmp = True else: asg_vm_info = None group_info = None curr_image = None pas_config = autoscaling_groups_helper.get_pas_config(request, group_name) return render(request, 'groups/asg_config.html', { "asg_vm_config": asg_vm_info, "app_names": appNames, "curr_image": curr_image, "group_config": group_info, "group_name": group_name, "pas_config": pas_config, "is_cmp": is_cmp })
def get(self, request, group_name): asg_status = groups_helper.get_autoscaling_status(request, group_name) group_size_datum = \ autoscaling_metrics_helper.get_asg_size_metric(request, group_name, settings.DEFAULT_START_TIME) spot_group_name = "{}-spot".format(group_name) alarm_infos = groups_helper.get_alarms(request, group_name) spot_alarm_infos = groups_helper.get_alarms(request, spot_group_name) enable_policy = False if alarm_infos and len(alarm_infos) > 0: enable_policy = True removeIdx = [] if alarm_infos: alarm_infos = sorted(alarm_infos, key=lambda info: info["metricSource"]) for idx in xrange(len(alarm_infos)): alarm_info = alarm_infos[idx] alarm_infos[idx]["actionType2"] = "UNKNOWN" alarm_infos[idx]["threshold2"] = -1 if spot_alarm_infos: alarm_infos[idx]["spotActionType"] = spot_alarm_infos[idx]["actionType"] alarm_infos[idx]["spotThreshold"] = spot_alarm_infos[idx]["threshold"] alarm_infos[idx]["spotActionType2"] = "UNKNOWN" alarm_infos[idx]["spotThreshold2"] = -1 else: alarm_infos[idx]["spotActionType"] = "UNKNOWN" alarm_infos[idx]["spotThreshold"] = -1 alarm_infos[idx]["spotActionType2"] = "UNKNOWN" alarm_infos[idx]["spotThreshold2"] = -1 metric_name = alarm_info["metricSource"] if idx > 0 and metric_name == alarm_infos[idx - 1]["metricSource"]: alarm_infos[idx - 1]["actionType2"] = alarm_info["actionType"] alarm_infos[idx - 1]["threshold2"] = alarm_info["threshold"] if spot_alarm_infos: alarm_infos[idx - 1]["spotActionType2"] = spot_alarm_infos[idx]["actionType"] alarm_infos[idx - 1]["spotThreshold2"] = spot_alarm_infos[idx]["threshold"] removeIdx.append(idx) else: alarm_info["metric_datum"] = \ autoscaling_metrics_helper.get_metric_data(request, group_name, metric_name, settings.DEFAULT_START_TIME) for offset, idx in enumerate(removeIdx): idx -= offset del alarm_infos[idx] envs = environs_helper.get_all_envs_by_group(request, group_name) scaling_down_event_enabled = groups_helper.get_scaling_down_event_status(request, group_name) return render(request, 'groups/group_details.html', { "asg_status": asg_status, "group_name": group_name, "enable_policy": enable_policy, "alarm_infos": alarm_infos, "spot_alarm_infos": spot_alarm_infos, "group_size_datum": group_size_datum, "scaling_down_event_enabled": scaling_down_event_enabled, "envs": envs, })
def get_latency_metrics(request, group_name): envs = environs_helper.get_all_envs_by_group(request, group_name) launch_config = autoscaling_groups_helper.get_group_info(request, group_name) util_data = {} stage_names = [] if len(envs) == 0: return HttpResponse(json.dumps(util_data), content_type="application/json") try: for env in envs: name = "{}.{}".format(env["envName"], env["stageName"]) stage_names.append(name) metric_name1 = "launch_latency.{}".format(name) launch_data_points = autoscaling_metrics_helper.get_latency_data(request, env["id"], "LAUNCH", settings.DEFAULT_START_TIME) json_data = [] for data_point in launch_data_points: timestamp, value = data_point["timestamp"], data_point["value"] / 1000 json_data.append([timestamp, value]) util_data[metric_name1] = json_data metric_name2 = "deploy_latency.{}".format(name) deploy_data_points = autoscaling_metrics_helper.get_latency_data(request, env["id"], "DEPLOY", settings.DEFAULT_START_TIME) json_data2 = [] for data_point in deploy_data_points: timestamp, value = data_point["timestamp"], data_point["value"] / 1000 json_data2.append([timestamp, value]) util_data[metric_name2] = json_data2 util_data["stage_names"] = stage_names util_data["launch_latency_th"] = launch_config.get("groupInfo")["launchLatencyTh"] except: log.error(traceback.format_exc()) return HttpResponse(json.dumps(util_data), content_type="application/json")
def get(self, request, group_name): asg_cluster = groups_helper.get_group_info(request, group_name) appNames = images_helper.get_all_app_names(request) appNames = sorted(appNames) is_cmp = False if asg_cluster: asg_vm_info = asg_cluster.get("launchInfo") if asg_vm_info and asg_vm_info.get("subnets"): asg_vm_info["subnetArrays"] = asg_vm_info["subnets"].split(',') group_info = asg_cluster.get("groupInfo") curr_image = images_helper.get_image_by_id(request, asg_vm_info["imageId"]) group_info = get_group_config_internal(group_info) envs = environs_helper.get_all_envs_by_group(request, group_name) for env in envs: basic_cluster_info = clusters_helper.get_cluster(request, env.get('envName'), env.get('stageName')) if basic_cluster_info: is_cmp = True else: asg_vm_info = None group_info = None curr_image = None return render(request, 'groups/asg_config.html', { "asg_vm_config": asg_vm_info, "app_names": appNames, "curr_image": curr_image, "group_config": group_info, "group_name": group_name, "is_cmp": is_cmp })
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(self, request, group_name): asg_cluster = groups_helper.get_group_info(request, group_name) appNames = images_helper.get_all_app_names(request) appNames = sorted(appNames) is_cmp = False if asg_cluster: asg_vm_info = asg_cluster.get("launchInfo") if asg_vm_info and asg_vm_info.get("subnets"): asg_vm_info["subnetArrays"] = asg_vm_info["subnets"].split(',') group_info = asg_cluster.get("groupInfo") curr_image = images_helper.get_image_by_id(request, asg_vm_info["imageId"]) group_info = get_group_config_internal(group_info) envs = environs_helper.get_all_envs_by_group(request, group_name) for env in envs: basic_cluster_info = clusters_helper.get_cluster( request, env.get('envName'), env.get('stageName')) if basic_cluster_info: is_cmp = True else: asg_vm_info = None group_info = None curr_image = None return render( request, 'groups/asg_config.html', { "asg_vm_config": asg_vm_info, "app_names": appNames, "curr_image": curr_image, "group_config": group_info, "group_name": group_name, "is_cmp": is_cmp })
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(self, request, group_name): asg_status = groups_helper.get_autoscaling_status(request, group_name) envs = environs_helper.get_all_envs_by_group(request, group_name) scaling_down_event_enabled = groups_helper.get_scaling_down_event_status(request, group_name) return render(request, 'groups/group_details.html', { "asg_status": asg_status, "group_name": group_name, "scaling_down_event_enabled": scaling_down_event_enabled, "envs": envs, })
def get(self, request, group_name): autoscaling_summary = 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) scaling_down_event_enabled = groups_helper.get_scaling_down_event_status(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, })
def get(self, request, group_name): asg_status = groups_helper.get_autoscaling_status(request, group_name) group_size_datum = \ autoscaling_metrics_helper.get_asg_size_metric(request, group_name, settings.DEFAULT_START_TIME) alarm_infos = groups_helper.get_alarms(request, group_name) enable_policy = False if alarm_infos and len(alarm_infos) > 0: enable_policy = True removeIdx = [] if alarm_infos: for idx in xrange(len(alarm_infos)): alarm_info = alarm_infos[idx] alarm_infos[idx]["actionType2"] = "UNKNOWN" alarm_infos[idx]["threshold2"] = -1 metric_name = alarm_info["metricSource"] if idx > 0 and metric_name == alarm_infos[idx - 1]["metricSource"]: alarm_infos[idx - 1]["actionType2"] = alarm_info["actionType"] alarm_infos[idx - 1]["threshold2"] = alarm_info["threshold"] removeIdx.append(idx) else: alarm_info["metric_datum"] = \ autoscaling_metrics_helper.get_metric_data(request, group_name, metric_name, settings.DEFAULT_START_TIME) for offset, idx in enumerate(removeIdx): idx -= offset del alarm_infos[idx] envs = environs_helper.get_all_envs_by_group(request, group_name) scaling_down_event_enabled = groups_helper.get_scaling_down_event_status( request, group_name) return render( request, 'groups/group_details.html', { "asg_status": asg_status, "group_name": group_name, "enable_policy": enable_policy, "alarm_infos": alarm_infos, "group_size_datum": group_size_datum, "scaling_down_event_enabled": scaling_down_event_enabled, "envs": envs, })
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_group_config(request, group_name): try: group_info = groups_helper.get_group_info(request, group_name) group_config = group_info.get("groupInfo") group_config = get_group_config_internal(group_config) is_cmp = False envs = environs_helper.get_all_envs_by_group(request, group_name) for env in envs: basic_cluster_info = clusters_helper.get_cluster(request, env.get('envName'), env.get('stageName')) if basic_cluster_info: is_cmp = True html = render_to_string('groups/group_config.tmpl', { "group_name": group_name, "config": group_config, "is_cmp": is_cmp, "csrf_token": get_token(request), }) except: log.error(traceback.format_exc()) raise return HttpResponse(json.dumps(html), content_type="application/json")
def get_group_config(request, group_name): try: group_info = autoscaling_groups_helper.get_group_info(request, group_name) group_config = group_info.get("groupInfo") group_config = get_group_config_internal(group_config) is_cmp = False envs = environs_helper.get_all_envs_by_group(request, group_name) for env in envs: basic_cluster_info = clusters_helper.get_cluster(request, env.get('clusterName')) if basic_cluster_info: is_cmp = True html = render_to_string('groups/group_config.tmpl', { "group_name": group_name, "config": group_config, "is_cmp": is_cmp, "csrf_token": get_token(request), }) except: log.error(traceback.format_exc()) raise return HttpResponse(json.dumps(html), content_type="application/json")
def get(self, request, group_name): asg_cluster = autoscaling_groups_helper.get_group_info( request, group_name) appNames = baseimages_helper.get_image_names(request, 'AWS') appNames = sorted(appNames) is_cmp = False if asg_cluster: asg_vm_info = asg_cluster.get("launchInfo") curr_image = None if asg_vm_info: curr_image = baseimages_helper.get_by_provider_name( request, asg_vm_info["imageId"]) if asg_vm_info.get("subnets"): asg_vm_info["subnetArrays"] = asg_vm_info["subnets"].split( ',') group_info = asg_cluster.get("groupInfo") group_info = get_group_config_internal(group_info) envs = environs_helper.get_all_envs_by_group(request, group_name) for env in envs: basic_cluster_info = clusters_helper.get_cluster( request, env.get('clusterName')) if basic_cluster_info: is_cmp = True else: asg_vm_info = None group_info = None curr_image = None pas_config = autoscaling_groups_helper.get_pas_config( request, group_name) return render( request, 'groups/asg_config.html', { "asg_vm_config": asg_vm_info, "app_names": appNames, "curr_image": curr_image, "group_config": group_info, "group_name": group_name, "pas_config": pas_config, "is_cmp": is_cmp })
def get_launch_rate(request, group_name): envs = environs_helper.get_all_envs_by_group(request, group_name) util_data = {} if len(envs) == 0: return HttpResponse(json.dumps(util_data), content_type="application/json") try: util_data["metric_names"] = [] for env in envs: metric_name = "mimmax:5m-mimmax:autoscaling.{}.{}.first_deploy.failed".format( env["envName"], env["stageName"]) rate_data_points = autoscaling_metrics_helper.get_raw_metrics(request, metric_name, settings.DEFAULT_START_TIME) json_data = [] for data_point in rate_data_points: timestamp, value = data_point["timestamp"], data_point["value"] json_data.append([timestamp, value]) util_data[metric_name] = json_data util_data["metric_names"].append(metric_name) except: log.error(traceback.format_exc()) return HttpResponse(json.dumps(util_data), 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) 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_envs(request, group_name): envs = environs_helper.get_all_envs_by_group(request, group_name) html = render_to_string('groups/group_envs.tmpl', { "envs": envs, }) return HttpResponse(html)