Beispiel #1
0
    def post(self, request, name, stage):
        query_dict = request.POST
        hosts_str = query_dict["hosts"]
        hosts = []
        if hosts_str:
            hosts = [x.strip() for x in hosts_str.split(',')]
        environs_helper.update_env_capacity(request,
                                            name,
                                            stage,
                                            capacity_type="HOST",
                                            data=hosts)

        groups_str = query_dict["groups"]
        groups = []
        if groups_str:
            groups = [x.strip() for x in groups_str.split(',')]

        if IS_PINTEREST:
            basic_cluster_info = clusters_helper.get_cluster(
                request, name, stage)
            if basic_cluster_info:
                cluster_name = common.get_cluster_name(request, name, stage)
                groups.append(cluster_name)
        environs_helper.update_env_capacity(request,
                                            name,
                                            stage,
                                            capacity_type="GROUP",
                                            data=groups)

        return self.get(request, name, stage)
Beispiel #2
0
    def post(self, request, name, stage):
        logger.info("Post to capacity with data {0}".format(request.body))
        data = json.loads(request.body)
        hosts =  data.get('hosts')
        if hosts != None:
            environs_helper.update_env_capacity(request, name, stage, capacity_type="HOST", data=hosts)

        groups = data.get("groups")
        if groups != None:
            environs_helper.update_env_capacity(request, name, stage, capacity_type="GROUP",
                                                data=groups)

        return self.get(request, name, stage)
    def post(self, request, name, stage):
        logger.info("Post to capacity with data {0}".format(request.body))
        data = json.loads(request.body)
        hosts =  data.get('hosts')
        if hosts != None:
            environs_helper.update_env_capacity(request, name, stage, capacity_type="HOST", data=hosts)

        groups = data.get("groups")
        if groups != None:
            environs_helper.update_env_capacity(request, name, stage, capacity_type="GROUP",
                                                data=groups)

        return self.get(request, name, stage)
Beispiel #4
0
    def post(self, request, name, stage):
        query_dict = request.POST
        hosts_str = query_dict["hosts"]
        hosts = []
        if hosts_str:
            hosts = [x.strip() for x in hosts_str.split(',')]
        environs_helper.update_env_capacity(request, name, stage, capacity_type="HOST", data=hosts)

        groups_str = query_dict["groups"]
        groups = []
        if groups_str:
            groups = [x.strip() for x in groups_str.split(',')]
        environs_helper.update_env_capacity(request, name, stage, capacity_type="GROUP",
                                            data=groups)

        return self.get(request, name, stage)
    def post(self, request, name, stage):
        query_dict = request.POST
        hosts_str = query_dict["hosts"]
        hosts = []
        if hosts_str:
            hosts = [x.strip() for x in hosts_str.split(',')]
        environs_helper.update_env_capacity(request, name, stage, capacity_type="HOST", data=hosts)

        groups_str = query_dict["groups"]
        groups = []
        if groups_str:
            groups = [x.strip() for x in groups_str.split(',')]
        environs_helper.update_env_capacity(request, name, stage, capacity_type="GROUP",
                                            data=groups)

        return self.get(request, name, stage)
    def post(self, request, name, stage):
        query_dict = request.POST
        hosts_str = query_dict["hosts"]
        hosts = []
        if hosts_str:
            hosts = [x.strip() for x in hosts_str.split(',')]
        environs_helper.update_env_capacity(request, name, stage, capacity_type="HOST", data=hosts)

        groups_str = query_dict["groups"]
        groups = []
        if groups_str:
            groups = [x.strip() for x in groups_str.split(',')]

        basic_cluster_info = clusters_helper.get_cluster(request, name, stage)
        if basic_cluster_info:
            cluster_name = '{}-{}'.format(name, stage)
            groups.append(cluster_name)
        environs_helper.update_env_capacity(request, name, stage, capacity_type="GROUP",
                                            data=groups)

        return self.get(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)
        external_id = src_env.get('externalId', None)

        ##1. teletraan service create a new env
        dest_env = environs_helper.create_env(
            request, {
                'envName': dest_name,
                'stageName': dest_stage,
                'buildName': build_name,
                'externalId': external_id
            })
        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_with_env(
            request, dest_cluster_name, dest_name, dest_stage,
            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")
Beispiel #8
0
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")