class AuthAPI: parser = DataParser() JWT_SECRET = 'secret' JWT_ALGORITHM = 'HS256' JWT_EXP_DELTA_SECONDS = 60 def __init__(self, app): self.app = app self.client = ApimanagerClient() self.client.setapp(app) self.gqlclient = GqlClient(QL_URL, app) app.add_url_rule("/v1/login", 'login', view_func=EndpointAction(self.login), methods=['POST']) app.add_url_rule("/v1/locallogin", 'locallogin', view_func=EndpointAction(self.locallogin), methods=['POST']) app.add_url_rule("/v1/checktoken", 'checktoken', view_func=EndpointAction(self.checktoken), methods=['POST']) app.add_url_rule("/v1/mastersync", 'mastersync', view_func=EndpointAction(self.mastersync), methods=['POST']) @parser.response_data def login(self): # argment : user_id, password (SHA-256 -> bCrypto) self.app.logger.info("Login") dic_data = self.parser.GetJson(Login(), request) self.app.logger.info("login dic_data : {}".format(dic_data)) res = self.client.login(dic_data.get('user'), dic_data.get('password')) self.app.logger.info("login res_data : {}".format(res)) return res @parser.response_data def locallogin(self): self.app.logger.info("LocalLogin") jwt = jwtutil() dic_data = self.parser.GetJson(Login(), request) try: res = self.client.PasswordCheck(dic_data.get('user'), dic_data.get('password')) except Exception as e: res = False self.app.logger.info("LocalLogin passwordcheck : {}".format(res)) if res: token = jwt.createToken().decode('utf-8') else: token = None self.app.logger.info("LocalLogin token : {}".format(token)) return {'token': token} @parser.response_data def checktoken(self): self.app.logger.info("checktoken") dic_data = self.parser.GetJson(CheckToken(), request) self.app.logger.info(dic_data.get('internal')) isvalid, userid, groupid, authentication, isinternal = self.client.CheckToken( dic_data.get('token')) res = { 'isvalid': isvalid, 'user_id': userid, 'group_id': groupid, 'authentication': authentication } return res @parser.response_data def mastersync(self): dic_data = self.parser.GetJson(MasterSync(), request) res = self.client.mastersync(dic_data.get('username'), dic_data.get('password')) self.app.logger.info("res : {}".format(res)) return res
class SyncAPI: parser = DataParser() app = None def __init__(self, app): self.app = app self.client = ApimanagerClient() self.client.setapp(app) # DEBUG # self.gqlclient = GqlClient("http://192.168.221.1:38080/graphql", self.app) app.add_url_rule("/v1/synccheck", 'synccheck', view_func=EndpointAction(self.synccheck), methods=['POST']) @parser.response_data def synccheck(self): self.app.logger.info("SyncCheck") dic_data = self.parser.GetJson(SyncCheck(strict=True), request) self.app.logger.info("Request Data : {}".format(dic_data)) sync_proc_list = SYNC_PROC sync_name = dic_data['sync_name'] res = self.client.synccheck(sync_name) # check_result = True # is_error = False # start_at = datetime.datetime.now(tz=timezone('Asia/Seoul')) # # start_at = datetime.datetime.now(tz=timezone('UTC')) # # try: # for sync_proc in SYNC_PROC: # check_data = {SYNC_PROC_PARAM_NAME: sync_proc, 'sync_name': sync_name} # if sync_proc.__eq__(SYNC_PROC_PRE): # self.app.logger.info("sync_proc:{}".format(SYNC_PROC_PRE)) # elif sync_proc.__eq__(SYNC_PROC_UPDATE): # self.app.logger.info("sync_proc:{}".format(SYNC_PROC_UPDATE)) # nodelist, volumelist, token = self.NodeSyncRequest() # # self.app.logger.info("token : {}".format(token)) # # self.app.logger.info("nodelist : {}".format(nodelist)) # # self.app.logger.info("volumelist : {}".format(volumelist)) # check_data['data'] = {'nodelist': nodelist, 'volumelist': volumelist} # elif sync_proc.__eq__(SYNC_PROC_AFTER): # self.app.logger.info("sync_proc:{}".format(SYNC_PROC_AFTER)) # check_data['sync_result'] = '1' # check_data['sync_start_at'] = start_at # # iscontinue, iserr, res = self.InternalSend(check_data, sync_proc) # if iserr: # break # # if not iscontinue: # self.app.logger.info('[{}] iscontinue False'.format(sync_proc)) # break # self.app.logger.info('[{}] iscontinue True'.format(sync_proc)) # # except Exception as e: # self.app.logger.info("EXCEPTION : {}".format(e)) # check_result = False # self.app.logger.info("Respose Data : {}".format(check_result)) return res def InternalSend(self, data, sync_proc): self.app.logger.info("data : {} \nsync_proc:{}".format( data, sync_proc)) is_err = False res = None try: res = self.client.send(method='synccheck', msg=data) except Exception as e: is_err = True self.app.logger.info( "sync_proc:{} [INTERNAL ERROR]".format(SYNC_PROC_AFTER)) self.app.logger.info("SyncCheck Response Data : {}".format(res)) if 'result' in res: if not res.get('result').__eq__('0000'): is_err = True else: self.app.logger.info('[{}] SUCCESS'.format(sync_proc)) else: self.app.logger.info('ERROR') is_err = True iscontinue = res.get('continue') return iscontinue, is_err, res # Sync Node Data Request def NodeSyncRequest(self): # Get Token username = "******" password = "******" token = None nodelistresp = None volumelistresp = None nodelist = None volumelist = None token = self.client.GetToken(username, password) # Get Data if token is not None: # self.app.logger.info("GET NODE LIST") # self.app.logger.info("GET VOLUME LIST") nodelist = self.client.GetNodeList(token) volumelist = self.client.GetVolumeList(token) return nodelist, volumelist, token def SyncHist(self, sync_name, errcode, msg, result, start_at): end_at = datetime.datetime.now(tz=True) sync_hist_data = { 'sync_proc': SYNC_PROC_HIST, 'sync_name': sync_name, 'sync_err_code': errcode, 'sync_result': result, 'sync_err_msg': msg, 'sync_start_at': start_at, 'sync_end_at': end_at } try: res = self.client.send(method='synccheck', msg=sync_hist_data) except Exception as e: is_error = True self.app.logger.info( "sync_proc:{} [INTERNAL ERROR]".format(SYNC_PROC_AFTER)) pass
class BiosAPI: parser = DataParser() def __init__(self,app): self.app = app self.client = ApimanagerClient() self.client.setapp(app) app.add_url_rule("/v1/bios/init", 'templateinit', view_func=EndpointAction(self.templateinit), methods=['POST']) app.add_url_rule("/v1/bios/gettemplate", 'gettemplatelist', view_func=EndpointAction(self.gettemplatelist), methods=['POST']) app.add_url_rule("/v1/bios/biosconfiglist", 'biosconfiglist', view_func=EndpointAction(self.biosconfiglist), methods=['POST']) app.add_url_rule("/v1/bios/settemplate", 'settemplate', view_func=EndpointAction(self.settemplate), methods=['POST']) app.add_url_rule("/v1/bios/dumpbiosconfig", 'dumpbiosconfig', view_func=EndpointAction(self.dumpbiosconfig), methods=['POST']) app.add_url_rule("/v1/bios/curtemplate", 'curtemplate', view_func=EndpointAction(self.curtemplate), methods=['POST']) app.add_url_rule("/v1/bios/getsyscfgdumplist", 'getsyscfgdumplist', view_func=EndpointAction(self.getsyscfgdumplist), methods=['POST']) app.add_url_rule("/v1/bios/getsyscfgdumpdata", 'getsyscfgdumpdata', view_func=EndpointAction(self.getsyscfgdumpdata), methods=['POST']) app.add_url_rule("/v1/bios/getbioshist", 'getbioshist', view_func=EndpointAction(self.bioshist), methods=['POST']) @parser.response_data def templateinit(self): self.app.logger.info("templateinit") # dic_data = self.parser.GetJson(TemplateInit(strict=True), request) # self.app.logger.info("templateinit ====> {}".format(dic_data)) res = self.client.send(method='setbiostemplatedata', msg=None) return res @parser.response_data def gettemplatelist(self): self.app.logger.info("gettemplatelist") dic_data = self.parser.GetJson(TemplateList(strict=True), request) res = self.client.send(method='gettemplatelist', msg=dic_data) return res @parser.response_data def biosconfiglist(self): self.app.logger.info('biosconfig') dic_data = self.parser.GetJson(CheckToken(strict=True), request) res = self.client.biosconfiglist(dic_data) return res @parser.response_data def curtemplate(self): self.app.logger.info('curtemplate') dic_data = self.parser.GetJson(CheckToken(strict=True), request) res = self.client.curtemplate(dic_data) return res @parser.response_data def settemplate(self): self.app.logger.info("settemplate") dic_data = self.parser.GetJson(SetTemplate(strict=True), request) self.app.logger.info("settemplate ====> {}".format(dic_data)) dic_data['runkind'] = 'set' res = self.client.setbiosconfig(dic_data) return res @parser.response_data def dumpbiosconfig(self): # dump run command self.app.logger.info("dumpbiosconfig") dic_data = self.parser.GetJson(DumpBiosConfig(strict=True), request) self.app.logger.info("dumpbiosconfig ====> {}".format(dic_data)) dic_data['runkind'] = 'dump' res = self.client.dumpbiosconfig(dic_data) return res @parser.response_data def getsyscfgdumplist(self): # bios backup list self.app.logger.info("getsyscfgdumplist") dic_data = self.parser.GetJson(CheckToken(strict=True), request) self.app.logger.info("getsyscfgdumplist ====> {}".format(dic_data)) # dic_data['getkind'] = 'dump' res = self.client.getsyscfgdumplist(dic_data) return res @parser.response_data def getsyscfgdumpdata(self): self.app.logger.info("getsyscfgdumpdata") dic_data = self.parser.GetJson(GetSyscfgDumpData(strict=True), request) self.app.logger.info("getsyscfgdumpdata ====> {}".format(dic_data)) res = self.client.send(method='getsyscfgdumpdata_api',msg=dic_data) return res @parser.response_data def bioshist(self): self.app.logger.info("bioshist") dic_data = self.parser.GetJson(CheckToken(strict=True), request) dic_data['kind'] = "bios" res = self.client.GetProcessHist(dic_data) return res
class SystemAPI: parser = DataParser() def __init__(self, app): self.app = app self.client = ApimanagerClient() self.client.setapp(app) app.add_url_rule("/v1/filesystem/getBackupSrcList", 'getbackupsrclist', view_func=EndpointAction(self.getbackupsrclist), methods=['POST']) app.add_url_rule("/v1/filesystem/getbackuptargetlist", 'getbackuptargetlist', view_func=EndpointAction(self.getbackupsrclist_inno), methods=['POST']) app.add_url_rule("/v1/filesystem/getRecoverList", 'getrecoverlist', view_func=EndpointAction(self.getrecoverlist), methods=['POST']) app.add_url_rule("/v1/filesystem/getrecovertargetlist", 'getrecovertargetlist', view_func=EndpointAction(self.getrestoresrclist_inno), methods=['POST']) app.add_url_rule("/v1/filesystem/backup", 'bakup', view_func=EndpointAction(self.backup), methods=['POST']) app.add_url_rule("/v1/filesystem/restore", 'restore', view_func=EndpointAction(self.restore), methods=['POST']) app.add_url_rule("/v1/filesystem/delsnap", 'delsnap', view_func=EndpointAction(self.delsnap), methods=['POST']) app.add_url_rule("/v1/filesystem/getrealhist", 'getrealhist', view_func=EndpointAction(self.getrealhist), methods=['POST']) app.add_url_rule("/v1/filesystem/backuphist", 'backuphist', view_func=EndpointAction(self.backuphist), methods=['POST']) app.add_url_rule("/v1/filesystem/restorehist", 'restorehist', view_func=EndpointAction(self.restorehist), methods=['POST']) app.add_url_rule("/v1/filesystem/history/getSystemHistory", 'getsystemhistory', view_func=EndpointAction(self.getsystemhistorybackup), methods=['POST']) app.add_url_rule("/v1/filesystem/history/getHistoryBackup", 'getsystemhistorybakup', view_func=EndpointAction(self.getsystemhistorybackup), methods=['POST']) app.add_url_rule("/v1/filesystem/history/getHistoryRecover", 'getsystemhistoryrecover', view_func=EndpointAction( self.getsystemhistoryrecover), methods=['POST']) app.add_url_rule("/v1/filesystem/history/getHistoryError", 'getsystemhistoryerror', view_func=EndpointAction(self.getsystemhistoryerror), methods=['POST']) app.add_url_rule("/v1/filesystem/history/deleteHistory", 'deletesystemhistory', view_func=EndpointAction(self.deletesystemhistory), methods=['POST']) app.add_url_rule("/v1/filesystem/history/setHistory", 'setsystemhistory', view_func=EndpointAction(self.setsystemhistory), methods=['POST']) # Backup Target Source List @parser.response_data def getbackupsrclist(self): self.app.logger.info("getbackupsrclist") dic_data = self.parser.GetJson(GetBackupSrcList(strict=True), request) self.app.logger.info("getbackupsrclist : send before") res = self.client.send(method='getbackupsrclist', msg=dic_data) return res @parser.response_data def getbackupsrclist_inno(self): self.app.logger.info("getbackupsrclist_inno") dic_data = self.parser.GetJson(GetBackupSrcList_Inno(strict=True), request) self.app.logger.info("dic_data : {}".format(dic_data)) token = dic_data.get('token') usetype = dic_data.get('usetype') self.app.logger.info("dic_data : {}".format(token)) targets = self.client.backuptargetlist(dic_data) self.app.logger.info("getbackupsrclist : send before") # res = self.client.send(method='getbackupsrclist', msg=dic_data) return targets @parser.response_data def getrestoresrclist_inno(self): self.app.logger.info("getrecoverlist") dic_data = self.parser.GetJson(GetBackupSrcList_Inno(strict=True), request) self.app.logger.info("getrecoverlist : send before") res = self.client.GetRestoreList(dic_data) return res @parser.response_data def getrecoverlist(self): self.app.logger.info("getrecoverlist") dic_data = self.parser.GetJson(GetRecoverList(strict=True), request) self.app.logger.info("getrecoverlist : send before") res = self.client.send(method='getrecoverlist', msg=dic_data) return res @parser.response_data def systembackup(self): self.app.logger.info("systembackup") dic_data = self.parser.GetJson(SystemBackup(strict=True), request) dic_data['backup_kind'] = 'increment' res = self.client.send(method='systembackup', msg=dic_data) return res @parser.response_data def backup(self): self.app.logger.info("backup command") dic_data = self.parser.GetJson(Backup(strict=True), request) res = self.client.send(method='backupcmd', msg=dic_data) return res @parser.response_data def restore(self): self.app.logger.info("restore command") dic_data = self.parser.GetJson(Restore(strict=True), request) res = self.client.send(method='restorecmd', msg=dic_data) return res @parser.response_data def delsnap(self): self.app.logger.info("snapshot delete command") dic_data = self.parser.GetJson(SnapDel(strict=True), request) res = self.client.send(method='deletecmd', msg=dic_data) return res @parser.response_data def getrealhist(self): self.app.logger.info("getrealhist") dic_data = self.parser.GetJson(RealHist(strict=True), request) self.app.logger.info("getrealhist : send before {}".format(dic_data)) dic_data['run_uuid'] = dic_data.get('runprocuuid') res = self.client.send(method='getrealhist', msg=dic_data) return res @parser.response_data def restorehist(self): self.app.logger.info("restorehist") dic_data = self.parser.GetJson(CheckToken(strict=True), request) dic_data['kind'] = "restore" res = self.client.GetProcessHist(dic_data) return res @parser.response_data def backuphist(self): self.app.logger.info("backuphist") dic_data = self.parser.GetJson(CheckToken(strict=True), request) dic_data['kind'] = "backup" res = self.client.GetProcessHist(dic_data) return res @parser.response_data def getsystemhistory(self): self.app.logger.info("getsystemhistory") dic_data = self.parser.GetJson(SystemHistory(strict=True), request) res = None if 'target_type_list' in dic_data: res = self.client.send(method='getsystemhistory', msg=dic_data) else: dic_data['target_type_list'] = ['backup', 'recover', 'error'] res = self.client.send(method='getsystemhistory', msg=dic_data) return res @parser.response_data def getsystemprocesshistory(self): self.app.logger.info("getsystemprocesshistory") dic_data = self.parser.GetJson(SystemHistory(strict=True), request) res = None if 'target_type_list' in dic_data: res = self.client.send(method='getsystemprocesshistory', msg=dic_data) else: dic_data['target_type_list'] = ['backup', 'recover', 'error'] res = self.client.send(method='getsystemprocesshistory', msg=dic_data) return res @parser.response_data def getsystemhistorybackup(self): self.app.logger.info("getsystemhistorybackup") dic_data = self.parser.GetJson(SystemHistory(strict=True), request) dic_data['target_type_list'] = ['backup'] res = self.client.send(method='getsystemprocesshistory', msg=dic_data) return res @parser.response_data def getsystemhistoryrecover(self): self.app.logger.info("getsystemhistoryrecover") dic_data = self.parser.GetJson(SystemHistory(strict=True), request) dic_data['target_type_list'] = ['recover'] # dic_data['node_uuid'] = nodeuuid res = self.client.send(method='getsystemprocesshistory', msg=dic_data) return res @parser.response_data def getsystemhistoryerror(self): self.app.logger.info("getsystemhistoryerror") dic_data = self.parser.GetJson(SystemHistory(strict=True), request) dic_data['target_type_list'] = ['error'] # dic_data['node_uuid'] = nodeuuid res = self.client.send(method='getsystemprocesshistory', msg=dic_data) return res @parser.response_data def deletesystemhistory(self): self.app.logger.info("deletesystemhistory") dic_data = None # dic_data['node_uuid'] = nodeuuid # dic_data['id'] = histid res = self.client.send(method='deletesystemhistory', msg=dic_data) return json.dumps(res) @parser.response_data def setsystemhistory(self): self.app.logger.info("setsystemhistory") dic_data = None dic_data = self.parser.GetJson(SetSystemHistory(strict=True), request) res = self.client.send(method='setsystemhistory', msg=dic_data) return json.dumps(res)