def update_pas_config(request, group_name): try: params = request.POST if not params['metric'] or not params['throughput']: raise Exception( "All fields for Predictive Autoscaling Config Must be specified. " ) data = {} data['group_name'] = group_name data["metric"] = params["metric"] data["throughput"] = int(params["throughput"]) if "pas_state" in params: data["pas_state"] = "ENABLED" else: data["pas_state"] = "DISABLED" # Reset min size to user defined min size pas_config = autoscaling_groups_helper.get_pas_config( request, group_name) asg_request = {} asg_request["groupName"] = group_name asg_request["minSize"] = int(pas_config.get("defined_min_size")) autoscaling_groups_helper.update_autoscaling( request, group_name, asg_request) autoscaling_groups_helper.update_pas_config(request, group_name, data) return get_pas_config(request, group_name) except: log.error(traceback.format_exc()) raise
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): 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) #Directly search the cluster name. As long as there exists a cluster, treat this as cmp and hide #Launch Configuration basic_cluster_info = clusters_helper.get_cluster(request, group_name) 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_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): 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_pas_config(request, group_name): try: pas_config = autoscaling_groups_helper.get_pas_config(request, group_name) html = render_to_string('groups/pase_config.tmpl', { "group_name": group_name, "pas_config": pas_config, "csrf_token": get_token(request), }) except: log.error(traceback.format_exc()) raise return HttpResponse(json.dumps(html), content_type="application/json")
def get_pas_metrics(request, group_name): pas_config = autoscaling_groups_helper.get_pas_config(request, group_name) util_data = {} if pas_config['pas_state'] != 'ENABLED': return HttpResponse(json.dumps(util_data), content_type="application/json") try: arcee_size_points = autoscaling_metrics_helper.get_pas_metrics(request, group_name, settings.DEFAULT_START_TIME, 'PREDICTED') json_data3 = [] for data_point in arcee_size_points: timestamp, value = data_point["timestamp"], data_point["value"] json_data3.append([timestamp, value]) util_data['arcee'] = json_data3 except: log.error(traceback.format_exc()) return HttpResponse(json.dumps(util_data), 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 update_pas_config(request, group_name): try: params = request.POST if not params['metric'] or not params['throughput']: raise Exception("All fields for Predictive Autoscaling Config Must be specified. ") data = {} data['group_name'] = group_name data["metric"] = params["metric"] data["throughput"] = int(params["throughput"]) if "pas_state" in params: data["pas_state"] = "ENABLED" else: data["pas_state"] = "DISABLED" # Reset min size to user defined min size pas_config = autoscaling_groups_helper.get_pas_config(request, group_name) asg_request = {} asg_request["groupName"] = group_name asg_request["minSize"] = int(pas_config.get("defined_min_size")) autoscaling_groups_helper.update_autoscaling(request, group_name, asg_request) autoscaling_groups_helper.update_pas_config(request, group_name, data) return get_pas_config(request, group_name) except: log.error(traceback.format_exc()) raise