예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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)