def post(self, request, name, stage): log.info("Post to capacity with data {0}".format(request.body)) try: cluster_name = '{}-{}'.format(name, stage) cluster_info = json.loads(request.body) log.info("Create Capacity in the provider") clusters_helper.create_cluster(request, cluster_name, cluster_info) log.info("Update cluster_name to environment") # Update environment environs_helper.update_env_basic_config(request, name, stage, data={"clusterName": cluster_name, "IsDocker": True}) log.info("Update capacity to the environment") # set up env and group relationship environs_helper.add_env_capacity( request, name, stage, capacity_type="GROUP", data=cluster_name) return HttpResponse("{}", content_type="application/json") except NotAuthorizedException as e: log.error("Have an NotAuthorizedException error {}".format(e)) return HttpResponse(e, status=403, content_type="application/json") except Exception as e: log.error("Have an error {}", e) return HttpResponse(e, status=500, content_type="application/json")
def post(self, request, name, stage): log.info("Post to capacity with data {0}".format(request.body)) try: cluster_name = '{}-{}'.format(name, stage) cluster_info = json.loads(request.body) log.info("Create Capacity in the provider") clusters_helper.create_cluster(request, cluster_name, cluster_info) log.info("Associate cluster_name to environment") # Update cluster info environs_helper.update_env_basic_config( request, name, stage, data={"clusterName": cluster_name}) log.info("Update capacity to the environment") # set up env and group relationship environs_helper.add_env_capacity(request, name, stage, capacity_type="GROUP", data=cluster_name) return HttpResponse("{}", content_type="application/json") except Exception as e: log.info("Have an error {}".format(e)) return HttpResponse(e, status=500, content_type="application/json")
def create_cluster(request, name, stage): params = request.POST cluster_info = {} cluster_info['capacity'] = params['capacity'] cluster_info['base_image_id'] = params['baseImageId'] cluster_info['provider'] = params['provider'] cluster_info['host_type_id'] = params['hostTypeId'] cluster_info['security_zone_id'] = params['securityZoneId'] cluster_info['placement_id'] = ",".join(params.getlist('placementId')) user_data_configs = parse_configs(params) if 'assignPublicIp' in params: user_data_configs['cmp_public_ip'] = 'yes' if 'role' in params and params['role'] != '': user_data_configs['cmp_role'] = params['role'] else: user_data_configs['cmp_role'] = 'base' config_id = clusters_helper.update_advanced_configs(request, name, stage, user_data_configs) cluster_info['config_id'] = config_id clusters_helper.create_cluster(request, name, stage, cluster_info) env_info = {} if 'isDocker' in params: env_info['isDocker'] = True else: env_info['isDocker'] = False environs_helper.update_env_basic_config(request, name, stage, data=env_info) return get_basic_cluster(request, name, stage)
def create_cluster(request, name, stage): params = request.POST cluster_info = {} cluster_info['capacity'] = params['capacity'] cluster_info['base_image_id'] = params['baseImageId'] cluster_info['provider'] = params['provider'] cluster_info['host_type_id'] = params['hostTypeId'] cluster_info['security_zone_id'] = params['securityZoneId'] cluster_info['placement_id'] = ",".join(params.getlist('placementId')) user_data_configs = parse_configs(params) if 'assignPublicIp' in params: user_data_configs['cmp_public_ip'] = 'yes' if 'role' in params and params['role'] != '': user_data_configs['cmp_role'] = params['role'] else: user_data_configs['cmp_role'] = 'base' config_id = clusters_helper.update_advanced_configs( request, name, stage, user_data_configs) cluster_info['config_id'] = config_id clusters_helper.create_cluster(request, name, stage, cluster_info) env_info = {} if 'isDocker' in params: env_info['isDocker'] = True else: env_info['isDocker'] = False environs_helper.update_env_basic_config(request, name, stage, data=env_info) return get_basic_cluster(request, name, stage)
def create_cluster(request, name, stage): params = request.POST cluster_info = parse_cluster_info(request) user_data_configs = parse_configs(params) cluster_info['configs'] = user_data_configs clusters_helper.create_cluster(request, name, stage, cluster_info) return get_basic_cluster(request, name, stage)
def create_cmp_cluster(request, name, stage): params = request.POST cluster_info = parse_cluster_info(request) config_map = get_default_cmp_configs(name, stage) user_data_configs = parse_configs(params) config_map.update(user_data_configs) cluster_info['configs'] = config_map clusters_helper.create_cluster(request, name, stage, cluster_info) return get_cmp_cluster(request, name, stage)
def create_cluster(request, name, stage): params = request.POST cluster_name = '{}-{}'.format(name, stage) cluster_info = parse_cluster_info(request, name, stage, cluster_name) user_data_configs = parse_configs(params) cluster_info['configs'] = user_data_configs clusters_helper.create_cluster(request, cluster_name, cluster_info) # set up env and group relationship environs_helper.add_env_capacity(request, name, stage, capacity_type="GROUP", data=cluster_name) return get_basic_cluster(request, name, stage)
def create_cmp_cluster(request, name, stage): params = request.POST cluster_name = "{}-{}".format(name, stage) cluster_info = parse_cluster_info(request, name, stage, cluster_name) config_map = get_default_cmp_configs(name, stage) user_data_configs = parse_configs(params) config_map.update(user_data_configs) cluster_info["configs"] = config_map clusters_helper.create_cluster(request, cluster_name, cluster_info) # set up env and group relationship environs_helper.add_env_capacity(request, name, stage, capacity_type="GROUP", data=cluster_name) return get_cmp_cluster(request, name, stage)
def create_cluster(request, name, stage): params = request.POST cluster_name = '{}-{}'.format(name, stage) adv_cluster_info = {} if 'assignPublicIp' in params: adv_cluster_info['assignPublicIp'] = True if 'role' in params: adv_cluster_info['role'] = params['role'] user_data_configs = parse_configs(params) if user_data_configs: adv_cluster_info['userDataConfigs'] = user_data_configs if adv_cluster_info: adv_cluster_info['clusterName'] = cluster_name adv_cluster_info['image'] = params['baseImageId'] adv_cluster_info['hostType'] = params['hostTypeId'] adv_cluster_info['securityZone'] = params['securityZoneId'] adv_cluster_info['minSize'] = params['capacity'] adv_cluster_info['maxSize'] = params['capacity'] adv_cluster_info['subnet'] = ",".join(params.getlist('placementId')) if 'assignPublicIp' not in params: adv_cluster_info['assignPublicIp'] = False clusters_helper.create_advanced_cluster(request, name, stage, params['provider'], adv_cluster_info) else: cluster_info = {} cluster_info['cluster_name'] = cluster_name cluster_info['capacity'] = params['capacity'] cluster_info['base_image_id'] = params['baseImageId'] cluster_info['provider'] = params['provider'] cluster_info['host_type_id'] = params['hostTypeId'] cluster_info['security_zone_id'] = params['securityZoneId'] cluster_info['placement_id'] = ",".join(params.getlist('placementId')) clusters_helper.create_cluster(request, name, stage, cluster_info) return get_basic_cluster(request, name, stage)
def post(self, request, name, stage): log.info("Post to capacity with data {0}".format(request.body)) try: cluster_name = '{}-{}'.format(name, stage) cluster_info = json.loads(request.body) log.info("Create Capacity in the provider") clusters_helper.create_cluster(request, cluster_name, cluster_info) log.info("Update cluster_name to environment") # Update environment environs_helper.update_env_basic_config(request, name, stage, data={ "clusterName": cluster_name, "IsDocker": True }) return HttpResponse("{}", content_type="application/json") except Exception as e: log.info("Have an error {}", e) return HttpResponse(e, status=500, content_type="application/json")
def create_cluster(request, name, stage): params = request.POST cluster_name = '{}-{}'.format(name, stage) adv_cluster_info = {} if 'assignPublicIp' in params: adv_cluster_info['assignPublicIp'] = True if 'role' in params and params['role'] != '': adv_cluster_info['role'] = params['role'] user_data_configs = parse_configs(params) if user_data_configs: adv_cluster_info['userDataConfigs'] = user_data_configs if adv_cluster_info: adv_cluster_info['clusterName'] = cluster_name adv_cluster_info['image'] = params['baseImageId'] adv_cluster_info['hostType'] = params['hostTypeId'] adv_cluster_info['securityZone'] = params['securityZoneId'] adv_cluster_info['minSize'] = params['capacity'] adv_cluster_info['maxSize'] = params['capacity'] adv_cluster_info['subnet'] = ",".join(params.getlist('placementId')) if 'assignPublicIp' not in params: adv_cluster_info['assignPublicIp'] = False clusters_helper.create_advanced_cluster(request, name, stage, params['provider'], adv_cluster_info) else: cluster_info = {} cluster_info['cluster_name'] = cluster_name cluster_info['capacity'] = params['capacity'] cluster_info['base_image_id'] = params['baseImageId'] cluster_info['provider'] = params['provider'] cluster_info['host_type_id'] = params['hostTypeId'] cluster_info['security_zone_id'] = params['securityZoneId'] cluster_info['placement_id'] = ",".join(params.getlist('placementId')) clusters_helper.create_cluster(request, name, stage, cluster_info) return get_basic_cluster(request, name, stage)
def clone_cluster(request, src_name, src_stage): try: params = request.POST dest_name = params.get('new_environment', src_name) dest_stage = params.get('new_stage', src_stage + '_clone') src_cluster_name = '{}-{}'.format(src_name, src_stage) dest_cluster_name = '{}-{}'.format(dest_name, dest_stage) ##0. teletraan service get src env buildName src_env = environs_helper.get_env_by_stage(request, src_name, src_stage) build_name = src_env.get('buildName', None) ##1. teletraan service create a new env dest_env = environs_helper.create_env(request, { 'envName': dest_name, 'stageName': dest_stage, 'buildName': build_name }) log.info('clone_cluster, created a new env %s' % dest_env) ##2. rodimus service get src_cluster config src_cluster_info = clusters_helper.get_cluster(request, src_cluster_name) log.info('clone_cluster, src cluster info %s' % src_cluster_info) configs = src_cluster_info.get('configs') if configs: cmp_group = configs.get('cmp_group') if cmp_group: cmp_groups_set = set(cmp_group.split(',')) cmp_groups_set.remove(src_cluster_name) cmp_groups_set.remove('CMP') cmp_groups_set.add(dest_cluster_name) # CMP needs to be the first in the list configs['cmp_group'] = ','.join(['CMP'] + list(cmp_groups_set)) src_cluster_info['configs'] = configs ##3. rodimus service post create cluster src_cluster_info['clusterName'] = dest_cluster_name src_cluster_info['capacity'] = 0 log.info('clone_cluster, request clone cluster info %s' % src_cluster_info) dest_cluster_info = clusters_helper.create_cluster(request, dest_cluster_name, src_cluster_info) log.info('clone_cluster, cloned cluster info %s' % dest_cluster_info) ##4. teletraan service update_env_basic_config environs_helper.update_env_basic_config(request, dest_name, dest_stage, data={"clusterName": dest_cluster_name} ) ##5. teletraan service set up env and group relationship environs_helper.update_env_capacity(request, dest_name, dest_stage, capacity_type="GROUP", data=[dest_cluster_name]) ##6. get src script_config src_script_configs = environs_helper.get_env_script_config(request, src_name, src_stage) src_agent_configs = environs_helper.get_env_agent_config(request, src_name, src_stage) src_alarms_configs = environs_helper.get_env_alarms_config(request, src_name, src_stage) src_metrics_configs = environs_helper.get_env_metrics_config(request, src_name, src_stage) src_webhooks_configs = environs_helper.get_env_hooks_config(request, src_name, src_stage) ##8. clone all the extra configs if src_agent_configs: environs_helper.update_env_agent_config(request, dest_name, dest_stage, src_agent_configs) if src_script_configs: environs_helper.update_env_script_config(request, dest_name, dest_stage, src_script_configs) if src_alarms_configs: environs_helper.update_env_alarms_config(request, dest_name, dest_stage, src_alarms_configs) if src_metrics_configs: environs_helper.update_env_metrics_config(request, dest_name, dest_stage, src_metrics_configs) if src_webhooks_configs: environs_helper.update_env_hooks_config(request, dest_name, dest_stage, src_webhooks_configs) return HttpResponse(json.dumps(src_cluster_info), content_type="application/json") except Exception as e: log.error("Failed to clone cluster env_name: %s, stage_name: %s" % (src_name, src_stage)) log.error(traceback.format_exc()) return HttpResponse(e, status=500, content_type="application/json")
def clone_cluster(request, src_name, src_stage): try: params = request.POST dest_name = params.get('new_environment', src_name) dest_stage = params.get('new_stage', src_stage + '_clone') src_cluster_name = '{}-{}'.format(src_name, src_stage) dest_cluster_name = '{}-{}'.format(dest_name, dest_stage) ##0. teletraan service get src env buildName src_env = environs_helper.get_env_by_stage(request, src_name, src_stage) build_name = src_env.get('buildName', None) ##1. teletraan service create a new env dest_env = environs_helper.create_env(request, { 'envName': dest_name, 'stageName': dest_stage, 'buildName': build_name }) log.info('clone_cluster, created a new env %s' % dest_env) ##2. rodimus service get src_cluster config src_cluster_info = clusters_helper.get_cluster(request, src_cluster_name) log.info('clone_cluster, src cluster info %s' % src_cluster_info) configs = src_cluster_info.get('configs') if configs: cmp_group = configs.get('cmp_group') if cmp_group: cmp_groups_set = set(cmp_group.split(',')) cmp_groups_set.remove(src_cluster_name) cmp_groups_set.remove('CMP') cmp_groups_set.add(dest_cluster_name) # CMP needs to be the first in the list configs['cmp_group'] = ','.join(['CMP'] + list(cmp_groups_set)) src_cluster_info['configs'] = configs ##3. rodimus service post create cluster src_cluster_info['clusterName'] = dest_cluster_name src_cluster_info['capacity'] = 0 log.info('clone_cluster, request clone cluster info %s' % src_cluster_info) dest_cluster_info = clusters_helper.create_cluster(request, dest_cluster_name, src_cluster_info) log.info('clone_cluster, cloned cluster info %s' % dest_cluster_info) ##4. teletraan service update_env_basic_config environs_helper.update_env_basic_config(request, dest_name, dest_stage, data={"clusterName": dest_cluster_name} ) ##5. teletraan service set up env and group relationship environs_helper.update_env_capacity(request, dest_name, dest_stage, capacity_type="GROUP", data=[dest_cluster_name]) ##6. get src script_config src_script_configs = environs_helper.get_env_script_config(request, src_name, src_stage) src_agent_configs = environs_helper.get_env_agent_config(request, src_name, src_stage) src_alarms_configs = environs_helper.get_env_alarms_config(request, src_name, src_stage) src_metrics_configs = environs_helper.get_env_metrics_config(request, src_name, src_stage) src_webhooks_configs = environs_helper.get_env_hooks_config(request, src_name, src_stage) ##8. clone all the extra configs if src_agent_configs: environs_helper.update_env_agent_config(request, dest_name, dest_stage, src_agent_configs) if src_script_configs: environs_helper.update_env_script_config(request, dest_name, dest_stage, src_script_configs) if src_alarms_configs: environs_helper.update_env_alarms_config(request, dest_name, dest_stage, src_alarms_configs) if src_metrics_configs: environs_helper.update_env_metrics_config(request, dest_name, dest_stage, src_metrics_configs) if src_webhooks_configs: environs_helper.update_env_hooks_config(request, dest_name, dest_stage, src_webhooks_configs) return HttpResponse(json.dumps(src_cluster_info), content_type="application/json") except NotAuthorizedException as e: log.error("Have an NotAuthorizedException error {}".format(e)) return HttpResponse(e, status=403, content_type="application/json") except Exception as e: log.error("Failed to clone cluster env_name: %s, stage_name: %s" % (src_name, src_stage)) log.error(traceback.format_exc()) return HttpResponse(e, status=500, content_type="application/json")