Exemplo n.º 1
0
class IpmiNode:

    parser = DataParser()

    def __init__(self,app):
        self.app = app
        self.client = ApimanagerClient()
        app.add_url_rule("/v1/ipmi/registerNode", 'registerIPMIConn', view_func=EndpointAction(self.registerIPMIConn), methods=['POST'])
        app.add_url_rule("/v1/ipmi/getNode", 'getIPMIConn', view_func=EndpointAction(self.registerIPMIConn),
                         methods=['POST'])
        app.add_url_rule("/v1/ipmi/updateNode", 'updateIPMIConn', view_func=EndpointAction(self.updateIPMIConn),
                         methods=['POST'])
        app.add_url_rule("/v1/ipmi/deleteNode", 'deleteIPMIConn', view_func=EndpointAction(self.deleteIPMIConn),
                         methods=['POST'])


    # Register Node
    @parser.response_data
    def registerIPMIConn(self):
        self.app.logger.info("registerIPMIConn")
        dic_data = self.parser.GetJson(IpmiConn(strict=True), request)
        res = self.client.send(method='registerIPMIConn',msg = dic_data)

        return json.dumps(res)

    # show ipmi connection information
    @parser.response_data
    def getIPMIConn(self, nodeuuid):
        self.app.logger.info("registerIPMIConn")
        dic_data = self.parser.GetJson(IpmiConn(strict=True), request)
        dic_data['conn_id'] = nodeuuid
        res = self.client.send(method='updateIPMIConn', msg=dic_data)

        return json.dumps(res)

    # change ipmi connection value
    @parser.response_data
    def updateIPMIConn(self, nodeuuid):
        self.app.logger.info("registerIPMIConn")
        dic_data = self.parser.GetJson(IpmiConn(strict=True), request)
        dic_data['conn_id'] = nodeuuid
        res = self.client.send(method='updateIPMIConn', msg=dic_data)

        return json.dumps(res)

    # delete ipmi connection Information
    @parser.response_data
    def deleteIPMIConn(self, nodeuuid):
        self.app.logger.info("registerIPMIConn")
        dic_data = {'conn_id':nodeuuid}
        res = self.client.send(method='deleteIPMIConn', msg=dic_data)

        return json.dumps(res)
Exemplo n.º 2
0
    def mutate(root, info, **kwargs):
        apimanager_client = ApimanagerClient()
        msg = {}
        print("Mutation RegisterNode : root = (), info = {}, kwargs = {}".format(root, info, **kwargs))

        for k,v in kwargs.items():
            if convert_map.get(k):
                key_value = convert_map.get(k)
            else:
                key_value = k
            msg[key_value] = v

            print("kwargs {} = {}".format(k,v))

        # response = {}
        response = apimanager_client.send(method='registerNode', msg=msg)
        print(response)
        if response.get('errorcode') is None:
            success_data = NodeResponse()
            success_data.nodeuuid = response.get('node_uuid')
            ret_data = ResponseMessageField(result="0000", resultMessage="Success", resultData=success_data)
        else:
            error_data = NodeResponse()
            error_data.nodeuuid = ""
            errorcode= response.get('errorcode')
            errorstr = response.get('errorstr')
            ret_data = ResponseMessageField(result=errorcode, resultMessage=errorstr, resultData=error_data)

        return RegisterNodeMutation(ret_data)
Exemplo n.º 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
Exemplo n.º 4
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
Exemplo n.º 5
0
class PxebootAPI:

    parser = DataParser()

    def __init__(self,app):
        self.app = app
        self.client = ApimanagerClient()
        app.add_url_rule("/v1/pxeboot/registerPXEBootImage", 'registerImage', view_func=EndpointAction(self.registerImage), methods=['POST'])
        app.add_url_rule("/v1/pxeboot/uploadPXEBootImageFile", 'uploadImageFile', view_func=EndpointAction(self.uploadImageFile),
                         methods=['POST'])
        app.add_url_rule("/v1/pxeboot/deletePXEBootImageFile", 'deletePXEBootImageFile',
                         view_func=EndpointAction(self.deletePXEBootImageFile),
                         methods=['POST'])
        app.add_url_rule("/v1/pxeboot/getPXEBootImage", 'getPXEBootImage', view_func=EndpointAction(self.getPXEBootImage),
                         methods=['POST'])
        app.add_url_rule("/v1/pxeboot/updatePXEBootImage", 'updatePXEBootImage',
                         view_func=EndpointAction(self.updatePXEBootImage),
                         methods=['POST'])
        app.add_url_rule("/v1/pxeboot/deletePXEBootImage", 'deletePXEBootImage', view_func=EndpointAction(self.deletePXEBootImage),
                         methods=['POST'])
        app.add_url_rule("/v1/pxeboot/registerPXEBootConfig", 'registerPXEBootConfig', view_func=EndpointAction(self.registerPXEBootConfig),
                         methods=['POST'])
        app.add_url_rule("/v1/pxeboot/getPXEBootConfig", 'getPXEBootConfig',
                         view_func=EndpointAction(self.getPXEBootConfig),
                         methods=['POST'])
        app.add_url_rule("/v1/pxeboot/updatePXEBootConfig", 'updatePXEBootConfig',
                         view_func=EndpointAction(self.updatePXEBootConfig),
                         methods=['POST'])
        app.add_url_rule("/v1/pxeboot/deletePXEBootConfig", 'deletePXEBootConfig',
                         view_func=EndpointAction(self.deletePXEBootConfig),
                         methods=['POST'])
        app.add_url_rule("/v1/pxeboot/history/getPXEBootHistory", 'getPXEBootHistory',
                         view_func=EndpointAction(self.getPXEBootHistory),
                         methods=['POST'])
        app.add_url_rule("/v1/pxeboot/history/deletePXEBootHistory", 'deletePXEBootHistory',
                         view_func=EndpointAction(self.deletePXEBootHistory),
                         methods=['POST'])


    # Register Node
    @parser.response_data
    def registerImage(self):
        self.app.logger.info("registerImage")
        dic_data = self.parser.GetJson(IpmiConn(strict=True), request)
        res = self.client.send(method='registerIPMIConn',msg = dic_data)

        return json.dumps(res)

    @parser.response_data
    def uploadImageFile(self, nodeuuid):
        self.app.logger.info("registerIPMIConn")
        dic_data = self.parser.GetJson(IpmiConn(strict=True), request)
        dic_data['conn_id'] = nodeuuid
        res = self.client.send(method='updateIPMIConn', msg=dic_data)

        return json.dumps(res)

    @parser.response_data
    def deleteImageFile(self, nodeuuid):
        self.app.logger.info("registerIPMIConn")
        dic_data = {'conn_id':nodeuuid}
        res = self.client.send(method='deleteIPMIConn', msg=dic_data)

        return json.dumps(res)
Exemplo n.º 6
0
class FirmwareAPI:

    parser = DataParser()

    def __init__(self,app):
        self.app = app
        self.client = ApimanagerClient()
        app.add_url_rule("/v1/firmware/registerFirmwareDepandency", 'registerfirmwaredepandency',
                         view_func=EndpointAction(self.registerfirmwaredepandency), methods=['POST'])
        app.add_url_rule("/v1/firmware/uploadFirmwareFile", 'firmwarefileupload',
                         view_func=EndpointAction(self.firmwarefileupload), methods=['POST'])
        app.add_url_rule("/v1/firmware/registerFirmware", 'registerfirmware',
                         view_func=EndpointAction(self.registerfirmware), methods=['POST'])
        app.add_url_rule("/v1/firmware/updateFirmware", 'updatefirmware',
                         view_func=EndpointAction(self.updatefirmware), methods=['POST'])
        app.add_url_rule("/v1/firmware/getAvailFirmwareList", 'getavailfirmwarelist',
                         view_func=EndpointAction(self.getavailfirmwarelist), methods=['POST'])      # availiable registed firmware file list
        app.add_url_rule("/v1/firmware/getFirmwareList", 'getfirmwarelist',
                         view_func=EndpointAction(self.getfirmwarelist), methods=['POST'])           # registed firmware file list
        app.add_url_rule("/v1/firmware/deleteFirmwareFile", 'deletefirmwarefile',
                         view_func=EndpointAction(self.deletefirmwarefile), methods=['POST'])
        app.add_url_rule("/v1/firmware/deleteFirmware", 'deletefirmware',
                         view_func=EndpointAction(self.deletefirmware), methods=['POST'])
        app.add_url_rule("/v1/firmware/deleteFirmwareDepandency", 'deletefirmwaredepandency',
                         view_func=EndpointAction(self.deletefirmwaredepandency), methods=['POST'])
        app.add_url_rule("/v1/firmware/history/getFirmwareHistory", 'getfirmwarehistory',
                         view_func=EndpointAction(self.getfirmwarehistory), methods=['POST'])
        app.add_url_rule("/v1/firmware/history/deleteFirmwareHistory", 'deletefirmwarehistory',
                         view_func=EndpointAction(self.deletefirmwarehistory), methods=['POST'])


    # Register Node
    @parser.response_data
    def registerfirmwaredepandency(self):
        self.app.logger.info("registerfirmwaredepandency")
        dic_data = self.parser.GetJson(IpmiConn(strict=True), request)
        res = self.client.send(method='registerfirmwaredepandency',msg = dic_data)

        return json.dumps(res)

    @parser.response_data
    def firmwarefileupload(self):
        self.app.logger.info("firmwarefileupload")
        dic_data = self.parser.GetJson(IpmiConn(strict=True), request)
        dic_data = None
        res = self.client.send(method='firmwarefileupload', msg=dic_data)

        return json.dumps(res)

    @parser.response_data
    def registerfirmware(self):
        self.app.logger.info("registerfirmware")
        dic_data = self.parser.GetJson(IpmiConn(strict=True), request)
        dic_data = None
        res = self.client.send(method='registerfirmware', msg=dic_data)

        return json.dumps(res)

    @parser.response_data
    def updatefirmware(self, nodeuuid):
        self.app.logger.info("updatefirmware")
        dic_data = self.parser.GetJson(IpmiConn(strict=True), request)
        dic_data = {'node_uuid': nodeuuid}
        res = self.client.send(method='updatefirmware', msg=dic_data)

        return json.dumps(res)

    @parser.response_data
    def getavailfirmwarelist(self, nodeuuid):
        self.app.logger.info("getavailfirmwarelist")
        dic_data = {'node_uuid': nodeuuid}
        res = self.client.send(method='getavailfirmwarelist', msg=dic_data)

        return json.dumps(res)

    @parser.response_data
    def getfirmwarelist(self):
        self.app.logger.info("getfirmwarelist")
        dic_data = None
        res = self.client.send(method='getfirmwarelist', msg=dic_data)

        return json.dumps(res)

    @parser.response_data
    def deletefirmware(self, firmwareid):
        self.app.logger.info("deletefirmware")
        dic_data = {'id': firmwareid}
        res = self.client.send(method='deletefirmware', msg=dic_data)

        return json.dumps(res)

    @parser.response_data
    def deletefirmwarefile(self, firmwareid):
        self.app.logger.info("deletefirmwarefile")
        dic_data = {'id': firmwareid}
        res = self.client.send(method='deletefirmwarefile', msg=dic_data)

        return json.dumps(res)

    @parser.response_data
    def deletefirmwaredepandency(self, depandencyid):
        self.app.logger.info("deletefirmwaredepandency")
        dic_data = {'id': depandencyid}
        res = self.client.send(method='deletefirmwaredepandency', msg=dic_data)

        return json.dumps(res)

    @parser.response_data
    def getfirmwarehistory(self):
        self.app.logger.info("getfirmwarehistory")
        dic_data = None
        res = self.client.send(method='getfirmwarehistory', msg=dic_data)

        return json.dumps(res)

    @parser.response_data
    def registerfirmware(self, histid):
        self.app.logger.info("deletefirmwarehistory")
        dic_data = {'id': histid}
        res = self.client.send(method='deletefirmwarehistory', msg=dic_data)

        return json.dumps(res)
Exemplo n.º 7
0
class RestNode:

    parser = DataParser()

    def __init__(self, app):
        self.app = app
        self.client = ApimanagerClient()
        app.add_url_rule("/v1/node/registerNode",
                         'RegisterNode',
                         view_func=EndpointAction(self.RegisterNode),
                         methods=['POST'])
        app.add_url_rule("/v1/node/getAllList",
                         'getNodeList',
                         view_func=EndpointAction(self.getNodeList),
                         methods=['POST'])
        app.add_url_rule("/v1/node/getParentList",
                         'getParentNodeList',
                         view_func=EndpointAction(self.getParentNodeList),
                         methods=['POST'])
        app.add_url_rule("/v1/node/getChildList",
                         'getChildNodeList',
                         view_func=EndpointAction(self.getChildNodeList),
                         methods=['POST'])
        app.add_url_rule("/v1/node/getNodeInfo",
                         'getNodeInfo',
                         view_func=EndpointAction(self.getNodeInfo),
                         methods=['POST'])
        app.add_url_rule("/v1/node/updateNode",
                         'updateNode',
                         view_func=EndpointAction(self.updateNode),
                         methods=['POST'])
        app.add_url_rule("/v1/node/deleteNode",
                         'deleteNode',
                         view_func=EndpointAction(self.deleteNode),
                         methods=['POST'])

    # Register Node
    @parser.response_data
    def RegisterNode(self):
        self.app.logger.info("RegisterNode")
        dic_data = self.parser.GetJson(RegisterNode_V1(strict=True), request)
        self.app.logger.info("Request Data : {}".format(dic_data))
        res = self.client.send(method='registerNode', msg=dic_data)
        self.app.logger.info("Respose Data : {}".format(res))
        return res

    # All Node List
    @parser.response_data
    def getNodeList(self):
        self.app.logger.info("getNodeList")
        dic_data = {'nodeuuid': None, 'search_kind': 0}
        res = self.client.send(method='getNodeList', msg=dic_data)
        return res

    # Leader Node List
    @parser.response_data
    def getParentNodeList(self):
        self.app.logger.info("getParentNodeList")
        dic_data = {'nodeuuid': None, 'search_kind': 1}
        res = self.client.send(method='getNodeList', msg=dic_data)
        return res

    # Compute Node List
    @parser.response_data
    def getChildNodeList(self):
        self.app.logger.info("getChildNodeList")
        dic_data = self.parser.GetJson(ChildNode(strict=True), request)
        dic_data['search_kind'] = 2
        res = self.client.send(method='getNodeList', msg=dic_data)
        return res

    # Get Node Info
    @parser.response_data
    def getNodeInfo(self):
        self.app.logger.info("getNodeInfo")
        dic_data = {'nodeuuid': None, 'search_kind': 3}
        res = self.client.send(method='getNodeInfo', msg=dic_data)
        return res

    # Updete Node
    @parser.response_data
    def updateNode(self):
        self.app.logger.info("updateNode")
        dic_data = self.parser.GetJson(UpdateNode(strict=True), request)
        res = self.client.send(method='updateNode', msg=dic_data)
        return res

    # Delete Node Info
    @parser.response_data
    def deleteNode(self):
        self.app.logger.info("deleteNode")
        dic_data = self.parser.GetJson(UpdateNode(strict=True), request)
        res = self.client.send(method='deleteNode', msg=dic_data)
        return res
Exemplo n.º 8
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)