Exemplo n.º 1
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,
            })
Exemplo n.º 2
0
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")
Exemplo n.º 3
0
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")
Exemplo n.º 4
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,
        })
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 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)
     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,
     })
Exemplo n.º 8
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,
         })