Beispiel #1
0
    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
        })
Beispiel #2
0
    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,
        })
Beispiel #3
0
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")
Beispiel #4
0
 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
     })
Beispiel #5
0
    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,
        })
Beispiel #6
0
 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
         })
Beispiel #7
0
    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,
            })
Beispiel #8
0
 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,
     })
Beispiel #9
0
 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,
     })
Beispiel #10
0
 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,
     })
Beispiel #11
0
    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,
            })
Beispiel #12
0
 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,
     })
Beispiel #13
0
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")
Beispiel #14
0
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")
Beispiel #15
0
    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
            })
Beispiel #16
0
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")
Beispiel #17
0
 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,
         })
Beispiel #18
0
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)
Beispiel #19
0
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)