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}
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))
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)))
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
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}
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}
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}
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
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
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
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
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
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
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
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
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}
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
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
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
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
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
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}
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
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
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
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
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}
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
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
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