# -*- coding:utf-8 -*-

#############################################################################
# Copyright (c) 2020 Huawei Technologies Co.,Ltd.
#
# openGauss is licensed under Mulan PSL v2.
# You can use this software according to the terms
# and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
#
#          http://license.coscl.org.cn/MulanPSL2
#
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
# ----------------------------------------------------------------------------
# Description  : gs_backup is a utility to back up
# or restore binary files and parameter files.
#############################################################################
import sys


class BackupImpl:
    '''
    classdocs
    input : NA
    output: NA
    '''
    ACTION_BACKUP = "backup"
    ACTION_RESTORE = "restore"

    def __init__(self, backupObj):
        '''
        function: Constructor
        input : backupObj
        output: NA
        '''
        self.context = backupObj

    def run(self):
        '''
        function: main flow
        input : NA
        output: NA
        '''
        try:
            self.context.initLogger(self.context.action)
        except Exception as e:
            self.context.logger.closeLog()
            raise Exception(str(e))

        try:
            self.parseConfigFile()
            if self.context.action == BackupImpl.ACTION_BACKUP:
                self.doRemoteBackup()
            else:
                self.doRemoteRestore()
            self.context.logger.closeLog()
        except Exception as e:
            self.context.logger.logExit(str(e))

    def parseConfigFile(self):
        """
        function: Parsing configuration files
        input : NA
        output: NA
        """
        pass

    def doRemoteBackup(self):
        """
        function: Backup cluster config files
        input : NA
        output: NA
        """
        pass

    def doRemoteRestore(self):
        """
        function: Restore cluster config files
        input : NA
        output: NA
        """
        pass