Ejemplo n.º 1
0
def cluster_swift_config_logic(hostname, filename=None):
    """
    :return:
    """
    status = ''
    message = ''
    resp = {"status": status, "message": message}
    host = SfoClusterNodesMethod.query_host_by_host_name(hostname)
    if not host:
        raise ValueError('not Node hostname is %s' % hostname)
    if filename:
        node_man = manager_class.NodeManager(host.node_inet_ip)
        content = node_man.swift_config.read_config(
            config_path=os.path.dirname(filename),
            config_file=os.path.basename(filename))
        config = ConfigParser()
        config.read_string(content)
        config_dict = OrderedDict()
        try:
            if config.defaults():
                default_config = config.defaults()
                config_dict[config.default_section] = default_config
            for section, option in config.items():
                if config.has_section(section):
                    section_copy = config._sections[section].copy()
                    config_dict[section] = section_copy
        except NoSectionError, error:
            access_logger.error('get exception %s from swift config' %
                                str(error))
        status = 200
        message = 'OK'
        data = {"config": config_dict}
Ejemplo n.º 2
0
def create_new_config_file(build_filepath, node, **kwargs):
    will_create_files = []
    filenames = SfoClusterConfigureMethod.query_group_by_filename()
    filenames = map(lambda x: x.config_filename, filenames)
    node_role = json.loads(node.node_role)
    node_srv = map(lambda x: x.lower().split('-')[0],
                   filter(lambda x: node_role[x] == 'YES', node_role))
    for srv in node_srv:
        create_filenames = filter(lambda x: srv in x and x.startswith(srv),
                                  filenames)
        will_create_files.extend(create_filenames)
    else:
        _conf_files = filter(
            lambda x: x.startswith('account') or x.startswith('container') or x
            .startswith('object') or x.startswith('proxy'), filenames)
        if len(node_srv) == 1 and node_srv[0] == 'proxy':
            will_create_files.extend(set(filenames) - set(_conf_files))
            try:
                will_create_files.remove('rsyncd.conf')
            except ValueError, error:
                try:
                    will_create_files.remove('rsync.conf')
                except ValueError, error:
                    access_logger.error(str(error))
                access_logger.error(str(error))
Ejemplo n.º 3
0
def async_disk_operation(node):
    data = []
    disk_op = DiskOperation(node.node_inet_ip, node.node_replicate_ip)
    try:
        available_list, disk_stat_map = disk_op.available_disks()
        abnormal_list = disk_stat_map['abnormal']
        xfs_fmt_list = disk_op.xfs_format_disks()
        mount_list, mt_info_list = disk_op.mounted_disks()
        for disk in available_list:
            disk_ = DiskInformation(disk, node.node_host_name, node.node_inet_ip, node.node_replicate_ip)
            data.append(disk_)
        for _disk in data:
            if _disk.host_name != node.node_host_name:
                continue
            if _disk.disk_name in abnormal_list:
                _disk.is_abnormal = '1'
            if _disk.disk_name in xfs_fmt_list:
                _disk.is_xfs_format = '1'
            if _disk.disk_name in mount_list:
                _disk.is_mount = '1'
                for mtinfo in mt_info_list:
                    if _disk.disk_name in mtinfo:
                        disk_mt_info = mtinfo.split(' ')
                        if len(disk_mt_info) == 5:
                            _disk.mount_on = disk_mt_info[1]
                            _disk.system_type = disk_mt_info[2]
                            _disk.mount_params = disk_mt_info[3]
                            _disk.label = disk_mt_info[4].replace('[', '').replace(']', '')
                        else:
                            _disk.mount_on = disk_mt_info[1]
                            _disk.system_type = disk_mt_info[2]
                            _disk.mount_params = disk_mt_info[3]
        return data
    except Exception, error:
        access_logger.error('Collect %s Disk Information Fail, Reason:%s '% (node.node_host_name, str(error)))
Ejemplo n.º 4
0
 def get(self):
     try:
         resp, status = get_cluster_list_logic()
         return resp, status
     except Exception, error:
         access_logger.error('Get ClusterListAPI get exception %s' % error)
         status = 500
         message = "Internal Server Error"
         return {'status': status, "message": message}, status
Ejemplo n.º 5
0
 def get(self, guid):
     try:
         resp = cluster_swift_user_info(guid)
         return resp
     except ValueError, error:
         access_logger.error(
             'get ClusterSwiftUserInfoAPI get exception %s' % error)
         status = 400
         message = 'Invaild Parameters %s' % str(error)
         return {'status': status, "message": message}
Ejemplo n.º 6
0
 def get(self, cluster_name):
     try:
         resp, status = cluster_swift_users_logic(cluster_name)
         return resp, status
     except Exception, error:
         access_logger.error(
             'get ClusterSwiftUserListAPI get exception %s' % error)
         status = 500
         message = "Internal Server Error %s" % str(error)
         return {'status': status, "message": message}
Ejemplo n.º 7
0
 def put(self, guid):
     try:
         resp = update_alarm_log_info(guid)
         return resp
     except ValueError, error:
         access_logger.error('put ClusterAlarmLogAPI get exception %s' %
                             error)
         status = 400
         message = 'Invaild Parameters %s' % str(error)
         return {'status': status, "message": message}
Ejemplo n.º 8
0
 def get(self, host_name):
     try:
         resp, status = get_cluster_hostinfo_detail_logic(host_name)
         return resp, status
     except Exception, error:
         access_logger.error(
             'GET ClusterHostInfoDetailAPI get exception %s' % error)
         status = 500
         message = "Internal Server Error %s" % str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 9
0
 def get(self, cluster_name):
     try:
         resp, status = get_ring_list(cluster_name)
         return resp, status
     except ValueError, error:
         access_logger.error('GET ClusterRingManagerApi get exception %s' %
                             error)
         status = 400
         message = str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 10
0
 def get(self, cluster_name):
     try:
         resp, status = get_partition_info_logic(cluster_name)
         return resp, status
     except Exception, error:
         access_logger.error('GET ClusterPartitionAPI get exception %s' %
                             error)
         status = 500
         message = "Internal Server Error %s" % str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 11
0
 def get(self, cluster_name):
     try:
         resp, status = get_node_performance_logic(cluster_name)
         return resp, status
     except Exception, error:
         access_logger.error('GET ClusterNodePerformAPI get exception %s' %
                             error)
         status = 500
         message = "Internal Server Error %s" % str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 12
0
 def put(self):
     try:
         cluster_json = request.json
         cluster_name = cluster_json.get('cluster_name')
         resp, status = update_cluster_config(cluster_name, cluster_json)
         return resp, status
     except ValueError, error:
         access_logger.error('PUT ClusterListAPI get exception %s' % error)
         status = 400
         message = str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 13
0
 def get(self, cluster_name):
     try:
         page = request.args.get('page', 1)
         limit = request.args.get('limit', 10)
         resp, status = get_cluster_agent_logic(cluster_name, page, limit)
         return resp, status
     except ValueError, error:
         access_logger.error('GET ClusterAgentManagerAPI get exception %s' % error)
         status = 400
         message = str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 14
0
 def get(self, cluster_name):
     try:
         ring_name = request.args.get('ring_name')
         resp, status = get_ring_info(cluster_name, ring_name)
         return resp, status
     except ValueError, error:
         access_logger.error(
             'GET ClusterRingManagerDetailApi get exception %s ' % error)
         status = 400
         message = str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 15
0
 def post(self):
     try:
         if not request.json:
             abort(400)
         login_json = request.json
         resp, status = user_login(login_json)
         return resp, status
     except ValueError, error:
         access_logger.error('Post UserLoginAPI get exception %s' % error)
         status = 400
         message = 'Invalid Parameter %s' % str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 16
0
 def get(self):
     try:
         page = request.args.get('page', 1)
         limit = request.args.get('limit', 10)
         resp = cluster_accounts_logic(page, limit)
         return resp
     except Exception, error:
         access_logger.error('get ClusterAccountListAPI get exception %s' %
                             error)
         status = 500
         message = "Internal Server Error %s" % error
         return {'status': status, "message": message}
Ejemplo n.º 17
0
 def put(self, cluster_name):
     try:
         cluster_json = request.json
         resp, status = update_cluster_info_logic(cluster_name,
                                                  cluster_json)
         return resp, status
     except ValueError, error:
         access_logger.error('PUT ClusterDetailAPI get exception %s' %
                             error)
         status = 400
         message = "Invalid Parameters %s" % str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 18
0
 def post(self):
     try:
         logout_json = request.json
         if not logout_json:
             raise ValueError("parameters is null")
         resp, status = user_logout_logic(logout_json)
         return resp, status
     except ValueError, error:
         access_logger.error('POST UserLogoutAPI get exception %s' % error)
         status = 400
         message = str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 19
0
 def get(self, cluster_name):
     try:
         is_host_info = request.args.get('host_info', '')
         resp, status = get_cluster_host_list_logic(cluster_name,
                                                    is_host_info)
         return resp, status
     except Exception, error:
         access_logger.error('GET ClusterHostListAPI get exception %s' %
                             error)
         status = 500
         message = "Internal Server Error %s" % str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 20
0
 def post(self, cluster_name):
     try:
         datajson = request.json
         if not datajson.get('ring_name'):
             raise ValueError('ring_name not allow null')
         resp, status = add_ring_2cluster(cluster_name, datajson)
         return resp, status
     except ValueError, error:
         access_logger.error('POST ClusterRingManagerApi get exception %s' %
                             error)
         status = 400
         message = str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 21
0
 def get(self, host_name):
     start_time = request.args.get('starttime', '')
     end_time = request.args.get('endtime', '')
     try:
         start_time = timestamp_format(start_time) if start_time else timestamp_format(time.time() - 3600)
         end_time = timestamp_format(end_time) if end_time else timestamp_format(time.time())
         resp, status = get_cluster_nodeperform_detail_logic(host_name, start_time=start_time, end_time=end_time)
         return resp, status
     except ValueError, error:
         access_logger.error('access ClusterNodePerformDetailAPI get exception %s' % error)
         status = 400
         message = 'Invalid Parameter'
         return {'status': status, "message": message}, status
Ejemplo n.º 22
0
 def put(self, guid):
     try:
         user_info_json = request.json
         role = user_info_json.get('role')
         account_id = user_info_json.get('account')
         resp = update_swift_user_info(guid, role, account_id)
         return resp
     except ValueError, error:
         access_logger.error(
             'put ClusterSwiftUserInfoAPI get exception %s' % error)
         status = 400
         message = 'Invaild Parameters %s' % str(error)
         return {'status': status, "message": message}
Ejemplo n.º 23
0
 def put(self):
     data_json = request.json
     try:
         if data_json:
             resp, status = cluster_dataresumer_logic(data_json)
         else:
             resp, status = {"status": 400, "message": "data_json is null"}
         return resp, status
     except Exception, error:
         access_logger.error(
             'access ClusterDataResumerAPI get exception %s' % error)
         status = 500
         message = "Internal Server Error %s" % error
         return {'status': status, "message": message}, status
Ejemplo n.º 24
0
 def post(self, cluster_name):
     try:
         test_json = request.json
         operation = test_json.get('operation', 'test_cmd_link')
         host_name = test_json.get('host_name')
         if operation == 'test_cmd_link':
             resp, status = test_cmd_link(host_name)
         else:
             resp, status = test_file_link(host_name)
         return resp, status
     except ValueError, error:
         access_logger.error('POST ClusterAgentManagerAPI get exception %s' % error)
         status = 400
         message = str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 25
0
 def get(self, cluster_name):
     start_time = request.args.get('starttime', '')
     end_time = request.args.get('endtime', '')
     try:
         start_time = timestamp_format(start_time, '%Y-%m-%d %H:%M:00') if start_time else timestamp_format(
             time.time() - 1800, '%Y-%m-%d %H:%M:00')
         end_time = timestamp_format(end_time, '%Y-%m-%d %H:%M:00') if end_time else timestamp_format(time.time(),
                                                                                                      '%Y-%m-%d %H:%M:00')
         resp, status = get_cluster_disk_io_logic(cluster_name, start_time, end_time)
         return resp, status
     except Exception, error:
         access_logger.error('GET ClusterDiskIOAPI get exception %s' % error)
         status = 500
         message = "Internal Server Error %s" % str(error)
         return {'status': status, "message": message}, status
Ejemplo n.º 26
0
class ClusterRequestCountApi(Resource):

    resource = (SfoProxyStatsDMethod, )

    @login_required
    @permission_required(*resource)
    @marshal_with(request_stat_fields_map)
    def get(self, cluster_name):
        start_time = request.args.get('starttime', '')
        end_time = request.args.get('endtime', '')
        try:
            start_time = timestamp_format(
                start_time) if start_time else timestamp_format(time.time() -
                                                                3600)
            end_time = timestamp_format(
                end_time) if end_time else timestamp_format(time.time())
            resp, status = get_requests_count_logic(cluster_name, start_time,
                                                    end_time)
            return resp, status
        except ValueError, error:
            access_logger.error('GET ClusterRequestCountApi get exception %s' %
                                error)
            status = 400
            message = "Invalid Parameters %s" % str(error)
            return {'status': status, "message": message}, status
        except Exception, error:
            access_logger.error('GET ClusterRequestCountApi get exception %s' %
                                error)
            status = 500
            message = "Internal Server Error %s" % str(error)
            return {'status': status, "message": message}, status
Ejemplo n.º 27
0
class ClusterAccountInfoAPI(Resource):

    resource = (SfoAccountManager, )

    @login_required
    @permission_required(*resource)
    def get(self):
        try:
            apply_account = request.args.get('applyAccount')
            system_env = request.args.get('system_env')
            if not (apply_account and system_env):
                return {
                    "status": 400,
                    "message": "applyAccount or system_env is null"
                }
            resp = cluster_account_info(apply_account, system_env)
            return resp
        except ValueError, error:
            access_logger.error('get ClusterAccountInfoAPI get exception %s' %
                                error)
            status = 400
            message = str(error)
            return {'status': status, "message": message}
        except Exception, error:
            access_logger.error('get ClusterAccountInfoAPI get exception %s' %
                                error)
            status = 500
            message = "Internal Server Error %s" % error
            return {'status': status, "message": message}
Ejemplo n.º 28
0
class UserLogoutAPI(Resource):

    """
    用户登出, 返回操作结果
    request: GET
    response :
        { 'status': 200/404 ,"data":data , "message": message}
    content-type : application/json
    """

    method_decorators = [login_required]

    @used_time
    def post(self):
        try:
            logout_json = request.json
            if not logout_json:
                raise ValueError("parameters is null")
            resp, status = user_logout_logic(logout_json)
            return resp, status
        except ValueError, error:
            access_logger.error('POST UserLogoutAPI get exception %s' % error)
            status = 400
            message = str(error)
            return {'status': status, "message": message}, status
        except Exception, error:
            access_logger.error('POST UserLogoutAPI get exception %s' % error)
            status = 500
            message = "Internal server error"
            return {'status': status, "message": message}, status
Ejemplo n.º 29
0
class ClusterAgentManagerAPI(Resource):

    """
    用于获取最近一次节点服务采集的数据
    request: GET
    response :
        { 'status': 200/404 ,"data":data , "message": message}
    content-type : application/json
    """

    resource = (BeatHeartInfoMethod, )
    # method_decorators = [access_log_decorate]

    @used_time
    @login_required
    @permission_required(*resource)
    @marshal_with(agent_field_map)
    def get(self, cluster_name):
        try:
            page = request.args.get('page', 1)
            limit = request.args.get('limit', 10)
            resp, status = get_cluster_agent_logic(cluster_name, page, limit)
            return resp, status
        except ValueError, error:
            access_logger.error('GET ClusterAgentManagerAPI get exception %s' % error)
            status = 400
            message = str(error)
            return {'status': status, "message": message}, status
        except Exception, error:
            access_logger.error('GET ClusterAgentManagerAPI get exception %s' % error)
            status = 500
            message = "Internal Server Error %s" % error
            return {'status': status, "message": message}, status
Ejemplo n.º 30
0
 def post(self, host_name):
     try:
         param = request.json
         if not param.get('service'):
             raise ValueError('service not null')
         if not param.get('operation'):
             raise ValueError('operation not Null')
         resp, status = create_cluster_nodesrv_detail_logic(
             host_name, param)
         return resp, status
     except ValueError, error:
         access_logger.error(
             'POST ClusterNodeSrvDetailAPI get exception %s' % error)
         status = 400
         message = str(error)
         return {'status': status, "message": message}, status