Exemple #1
0
def backup_config(ip):
    folder = '%s/%s' % (strCFGFolder, s.time_now_folder())
    Action(ip, telnet_port, passwd, FTP_port).backup(folder)
 def setup_class(self):
     self.time = sun.TimeNow()
     self.timenow = time.localtime()
Exemple #3
0
def backup_config_all():
    folder = '%s/%s' % (strCFGFolder, s.time_now_folder())
    for ip in list_engines_IP:
         Action(ip, telnet_port, passwd, FTP_port).backup(folder)
Exemple #4
0
 def sum_total_and_warning(self):
     lstSumTotal = list(self.sum_and_total())
     intTotal = lstSumTotal[1]
     intWarningLevel = s.is_Warning(intTotal, tuplThresholdTotal)
     lstSumTotalWarning = lstSumTotal.append(intWarningLevel)
     return lstSumTotalWarning
Exemple #5
0
def haap_interval_check(intInterval):
    t = s.Timing()
    t.add_interval(check_all_haap, intInterval)
    t.stt()
Exemple #6
0
    def get_trace(self, strBaseFolder, intTraceLevel):
        tn = self._TN_Conn
        connFTP = self._ftp()

        def _get_oddCommand(intTraceLevel):
            oddCMD = odd()
            if intTraceLevel == 1 or intTraceLevel == 2 or intTraceLevel == 3:
                oddCMD['Trace'] = 'ftpprep trace'
                if intTraceLevel == 2 or intTraceLevel == 3:
                    oddCMD['Primary'] = 'ftpprep coredump primary all'
                    if intTraceLevel == 3:
                        oddCMD['Secondary'] = 'ftpprep coredump secondary all'
                return oddCMD
            else:
                print(
                    'Trace level must be: 1 or 2 or 3, please refer "Config.ini" '
                )

        def _get_trace_file(command, strTraceDes):

            # TraceDes = Trace Description
            def _get_trace_name():
                result = tn.exctCMD(command)
                reTraceName = re.compile(r'(ftp_data_\d{8}_\d{6}.txt)')
                strTraceName = reTraceName.search(result)
                if strTraceName:
                    return strTraceName.group()
                else:
                    print('Generate trace "{}" file failed for "{}"'.format(
                        strTraceDes, self._host))

            trace_name = _get_trace_name()
            if trace_name:
                time.sleep(0.1)
                local_name = 'Trace_{}_{}.log'.format(self._host, strTraceDes)
                if connFTP.GetFile('mbtrace', '.', trace_name, local_name):
                    print('Get trace "{:<10}" for "{}" completed ...'.format(
                        strTraceDes, self._host))
                    return True
                else:
                    print('Get trace "{:<10}" for engine "{}" failed!!!\
                        '.format(strTraceDes, self._host))
                #     s.ShowErr(self.__class__.__name__,
                #               sys._getframe().f_code.co_name,
                #               'Get Trace "{:<10}" for Engine "{}" Failed!!!\
                #               '.format(strTraceDes, self._host))

        oddCommand = _get_oddCommand(intTraceLevel)
        lstCommand = list(oddCommand.values())
        lstDescribe = list(oddCommand.keys())

        if s.GotoFolder(strBaseFolder):
            for i in range(len(lstDescribe)):
                try:
                    if _get_trace_file(lstCommand[i], lstDescribe[i]):
                        continue
                    else:
                        break
                except Exception as E:
                    # s.ShowErr(self.__class__.__name__,
                    #           sys._getframe().f_code.co_name,
                    #           'Get Trace "{}" Failed for Engine "{}",\
                    # Error:'.format(lstDescribe[i], self._host),
                    #           E)
                    break
                time.sleep(0.1)
Exemple #7
0
    def home():
        if request.args.get('trace'):
            TRACE = request.args.get('trace')
            haap.get_trace(TRACE, trace_level_cfg)
        else:
            pass

        if mode == 'rt':
            StatusHAAP = haap_rt_info_to_show()
            if sw_enable_status == 'yes':
                StatusSANSW = sansw_rt_info_to_show()
            else:
                StatusSANSW = 0

            if StatusHAAP:
                StatusHAAP.sort(key=operator.itemgetter(0))
                tlu_haap = s.time_now_to_show()
                status_warning = 0
            else:
                tlu_haap = s.time_now_to_show()
                status_warning = 0

            if StatusSANSW:
                StatusSANSW.sort(key=operator.itemgetter(0))
                tlu_sansw = s.time_now_to_show()
                status_warning = 0
            else:
                tlu_sansw = s.time_now_to_show()
                status_warning = 0

        elif mode == 'db':
            lstWarningList = db.get_unconfirm_warning()
            if request.method == 'GET' and lstWarningList:
                error = 1
            else:
                db.update_warning()
                error = 0

            engine = haap_info_to_show()
            sansw = sansw_info_to_show()
            status_warning = db.get_unconfirm_warning()
            if engine:
                tlu_haap = engine[0]
                StatusHAAP = engine[1]
                StatusHAAP.sort(key=operator.itemgetter(0))

            else:
                tlu_haap = s.time_now_to_show()
                StatusHAAP = [0]

            if sansw:
                tlu_sansw = sansw[0]
                StatusSANSW = sansw[1]
                StatusSANSW.sort(key=operator.itemgetter(0))
            else:
                tlu_sansw = s.time_now_to_show()
                StatusSANSW = [0]

        return render_template("monitor.html",
                               Title_HAAP=lstDescHAAP,
                               Title_SANSW=lstDescSANSW,
                               tlu_haap=tlu_haap,
                               tlu_sansw=tlu_sansw,
                               status_haap=StatusHAAP,
                               status_sansw=StatusSANSW,
                               status_warning=status_warning,
                               interval_web_refresh=interval_web_refresh,
                               sw_enable_status=sw_enable_status,
                               VERSION=cs.VERSION)
def test_is_file():
    assert sun.is_file('Sundry.py') == True
    assert sun.is_file('test_Sundry.py') == False
def test_is_folder():
    assert sun.is_folder('test') == True
    assert sun.is_folder('pytest') == False
def test_is_trace_level():
    assert sun.is_trace_level(0) == None
    assert sun.is_trace_level(1) == True
def test_is_IP():
    assert sun.is_IP('10.203.1.1') == True
    assert sun.is_IP('6.6.6.256') == False
def test_is_Warning():
    assert sun.is_Warning(500, 200) == True
    assert sun.is_Warning(500, 2000) == None
    assert sun.is_Warning(100, [200, 2000]) == 0
    assert sun.is_Warning(600, [200, 2000]) == 1
    assert sun.is_Warning(3000, [200, 2000]) == 2
def test_time_now_to_show():
    assert sun.time_now_to_show()
def test_time_now_folder():
    assert sun.time_now_folder()
Exemple #15
0
def analyse_trace(ip, trace_level):
    s.TraceAnalyse(oddHAAPErrorDict, get_trace(ip, trace_level))
def test_is_port():
    assert sun.is_port('789') == True
    assert sun.is_port(789) == True
    assert sun.is_port('a789') == False
Exemple #17
0
 def _telnet_write(self, str, time_out):
     str_encoded = s.encode_utf8(str)
     self._TN_Conn.Connection.write(str_encoded)
     time.sleep(time_out)
def test_ShowErr():
    assert sun.ShowErr('a', 'b', 'c', 'd', 'e') == None
Exemple #19
0
def config_target(IP_Entered, license, version, speed, solid_args):
    obj_msg_out = solid_args[0]

    s.msg_out(obj_msg_out, '0. Connecting to Engine %s \n' % IP_Entered)
    objEngine = Action(IP_Entered, telnet_port, passwd, FTP_port, version,
                       solid_args)
    s.msg_out(obj_msg_out, '0. Connected to Engine %s \n' % IP_Entered)

    s.msg_out(obj_msg_out, '  1. Start to Change FW\n')
    objEngine.change_FW(firmware_file_name)
    s.msg_out(obj_msg_out, '  1. Change FW Done, Rebooting...\n')
    s.sand_glass(45)

    solid_args[0].insert('insert', '  2. Start Restor Factory Default\n')
    objEngine.factory_default()
    solid_args[0].insert('insert',
                         '  2. Restor Factory Default Done, Rebooting...\n')
    sandglass(20)

    solid_args[0].insert('insert', '  3. Start Changing IP Address\n')
    objEngine.change_ip_address(ip_engine_target)
    solid_args[0].insert('insert',
                         '  3. Change IP Address Done, Rebooting...\n')
    sandglass(15)

    del objEngine

    s.msg_out(obj_msg_out, '0. Connecting to Engine %s' % ip_engine_target)
    objEngine = Action(ip_engine_target, telnet_port, passwd, FTP_port,
                       version, solid_args)

    s.msg_out(obj_msg_out, '  4. Start to Install License\n')
    objEngine.install_license(license)
    s.msg_out(obj_msg_out, '  4. Install License Done\n')
Exemple #20
0
def Monitoring_heart_check(cycle_msg_args):
    t = s.Timing()
    t.add_cycle(se.send_live, cycle_msg_args)
    t.stt()
Exemple #21
0
def Monitoring_heart_check(cycle_msg_args):
    t = s.Timing()
    email = se.Email()
    t.add_cycle(email.send_alive_mail, cycle_msg_args)
    t.stt()
Exemple #22
0
def main():
    if len(sys.argv) == 1:  # 用户输入参数是否是本身,如果是
        print(strHelp)  # 打印帮助
    # OK
    elif sys.argv[1] == 'ptes':
        num_argv = len(sys.argv)
        if num_argv == 2 or num_argv > 3:
            print(strPTESHelp)
        elif sys.argv[2] == 'all':
            sw.print_porterror_all_formated()
        else:
            if s.is_IP(sys.argv[2]):
                sw.print_porterror_formated(sys.argv[2])
            else:
                print('Please provide correct switch ip...')
    # OK
    elif sys.argv[1] == 'ptcl':  # 判断执行参数是否为ptcl
        num_argv = len(sys.argv)  # 获取参数的个数
        if num_argv == 2 or num_argv > 4:  # 如果是2个或者大于4个
            print(strPTCLHelp)  # 打印提示信息
        elif sys.argv[2] == 'all':  # 如果是3个参数是 all
            sw.clear_all()  # 调用清除所有交换机端口错误函数
        elif s.is_IP(sys.argv[2]):  # 如果第3个参数是ip的话,判断是不是ip
            if num_argv == 4:  # 判断是否有第4个参数,如果有
                # if _isPort(sys.argv[3]):   错误
                if s.is_port(sys.argv[3]):  # 在判断第4个参数是否是正确的端口
                    # 调用清除具体ip,端口错误
                    sw.clear_one_port(sys.argv[2], sys.argv[3])
                else:
                    print('Please provide correct port number...')  # 请提供正确端口号
            else:
                print(strPTCLHelp)  # 打印提示
        else:
            print('Please provide correct switch ip...')  # 请提供正确的交换机ip
    # OK
    elif sys.argv[1] == 'sws':
        num_argv = len(sys.argv)
        if num_argv == 2 or num_argv > 3:
            print(strSWSHelp)
        elif sys.argv[2] == 'all':
            sw.print_switchshow_all()
        else:
            if s.is_IP(sys.argv[2]):
                sw.print_switchshow(sys.argv[2])
            else:
                print('Please provide correct switch ip...')

    # OK
    elif sys.argv[1] == 'bc':
        num_argv = len(sys.argv)
        if num_argv == 2 or num_argv > 3:
            print(strBCHelp)
        elif sys.argv[2] == 'all':
            haap.backup_config_all()
        else:
            if s.is_IP(sys.argv[2]):
                haap.backup_config(sys.argv[2])
            else:
                print('Please provide correct engine ip...')

    # get engines' trace files under TraceFolder based on Trace levels
    # trace、primary、seaond
    # OK git Trace   NOT have Primary
    elif sys.argv[1] == 'gt':
        num_argv = len(sys.argv)
        if num_argv > 3:
            trace_level = int(sys.argv[3])
        if num_argv == 2 or num_argv > 4:
            print(strGTHelp)
        elif sys.argv[2] == 'all':
            if num_argv > 3:
                if s.is_trace_level(trace_level):
                    haap.get_trace_all(trace_level)
                else:
                    print('Trace level must be "1" or "2" or "3"')
            else:
                haap.get_trace_all(0)
        elif s.is_IP(sys.argv[2]):
            if num_argv > 3:
                if s.is_trace_level(trace_level):
                    haap.get_trace(sys.argv[2], trace_level)
                else:
                    print('Trace level must be "1" or "2" or "3"')
            else:
                haap.get_trace(sys.argv[2], 0)
        else:
            print('Please provide correct engine ip...')

    # elif sys.argv[1] == 'at':
    #     num_argv = len(sys.argv)
    #     if num_argv > 3:
    #         trace_level = sys.argv[3]
    #     if num_argv == 2 or num_argv > 4:
    #         print(strPTCLHelp)
    #     elif sys.argv[2] == 'all':
    #         if num_argv > 3:
    #             if s.is_trace_level(trace_level):
    #                 haap.analyse_trace_all(trace_level)
    #             else:
    #                 print('Trace Level Must Be "1" or "2" or "3"')
    #         else:
    #             haap.analyse_trace_all(0)
    #     elif s.is_IP(sys.argv[2]):
    #         if num_argv > 3:
    #             if s.is_trace_level(trace_level):
    #                 haap.analyse_trace(sys.argv[2], trace_level)
    #             else:
    #                 print('Trace Level Must Be "1" or "2" or "3"')
    #         else:
    #             haap.analyse_trace(sys.argv[2], 0)
    #     else:
    #         print('Please Provide Correct Engine IP...')
    # OK python Main.py at Trace\2019-00-00
    elif sys.argv[1] == 'at':
        num_argv = len(sys.argv)
        if num_argv == 2 or num_argv > 3:
            print(strATHelp)
        else:
            if s.is_folder(sys.argv[2]):
                s.TraceAnalyse(sys.argv[2]).run()
            else:
                print('Please provide correct trace folder')
    # OK  python Main.py ec 10.203.1.223 cmd.txt
    elif sys.argv[1] == 'ec':
        if len(sys.argv) != 4:
            print(strECHelp)
        else:
            ip = sys.argv[2]
            command_file = sys.argv[3]
            if not s.is_IP(ip):
                print('Please provide correct engine ip...')
            if not s.is_file(command_file):
                print('File not exists. please provide correct file...')
            haap.execute_multi_commands(ip, command_file)
    # OK  python Main.py fw 10.203.1.223 FW15.9.7.7_OR.bin
    elif sys.argv[1] == 'fw':
        if len(sys.argv) != 4:
            print(strFWHelp)
        else:
            ip = sys.argv[2]
            fw_file = sys.argv[3]
            if not s.is_IP(ip):
                print('Please provide correct engine ip...')
            if not s.is_file(fw_file):
                print('File not exists. please provide correct file...')
            haap.change_firmware(ip, fw_file)
    # OK-
    elif sys.argv[1] == 'sts':
        num_argv = len(sys.argv)
        if num_argv == 2 or num_argv > 3:
            print(strSTSHelp)
        elif sys.argv[2] == 'all':
            haap.show_stauts_all()
        else:
            if s.is_IP(sys.argv[2]):
                haap.show_stauts(sys.argv[2])
            else:
                print('Please provide correct engine ip...')
    # OK
    elif sys.argv[1] == 'st':
        num_argv = len(sys.argv)
        if num_argv == 2 or num_argv > 3:
            print(strSTHelp)
        elif sys.argv[2] == 'all':
            haap.set_time_all()
        else:
            if s.is_IP(sys.argv[2]):
                haap.set_time(sys.argv[2])
            else:
                print('Please provide correct engine ip...')
    # OK
    elif sys.argv[1] == 'stm':
        num_argv = len(sys.argv)
        if num_argv == 2 or num_argv > 3:
            print(strSTMHelp)
        elif sys.argv[2] == 'all':
            haap.show_time_all()
        else:
            if s.is_IP(sys.argv[2]):
                haap.show_time(sys.argv[2])
            else:
                print('Please provide correct engine ip...')
    # OK
    elif sys.argv[1] == 'pc':
        num_argv = len(sys.argv)
        if num_argv == 2 or num_argv > 4:
            print(strPCHelp)


#             print(strPTCLHelp) 原
        elif num_argv > 2:
            if sys.argv[2] == 'all':
                haap.periodically_check_all()
                sw.periodically_check_all()
            elif sys.argv[2] == 'haap':
                if num_argv == 3:
                    haap.periodically_check_all()
                elif num_argv > 3:
                    if s.is_IP(sys.argv[3]):
                        haap.periodically_check(sys.argv[3])
                    else:
                        print('Please provide correct engine ip...')
            elif sys.argv[2] == 'sw':
                if num_argv == 3:
                    sw.periodically_check_all()
                elif num_argv > 3:
                    if s.is_IP(sys.argv[3]):
                        sw.periodically_check(sys.argv[3])
                    else:
                        print('Please provide correct SAN switch ip...')
            else:
                print(strPCHelp)
    # OK
    elif sys.argv[1] == 'mnt':
        num_argv = len(sys.argv)
        if num_argv == 2 or num_argv > 4:
            print(strMNTHelp)
        elif sys.argv[2] == 'rt':
            m.monitor_rt_1_thread()
        elif sys.argv[2] == 'db':
            m.monitor_db_4_thread()
        else:
            print('rt(realtime) or db(datarase)')

    elif sys.argv[1] == 'v':
        print("VersaTEL G1", cs.VERSION)
    else:
        print(strHelp)
Exemple #23
0
def periodically_check(ip):
    PCFile_name = 'PC_%s_SANSwitch_%s.log' % (s.time_now_folder(), ip)
    Action(ip, ssh_port, user, passwd,
           []).periodic_check(lstPCCommand, strPCFolder, PCFile_name)
Exemple #24
0
def periodically_check(ip):
    PCFile_name = 'PC_%s_Engine_%s.log' % (
        s.time_now_folder(), ip)
    Action(ip, telnet_port, passwd, FTP_port).periodic_check(
        lstPCCommand, strPCFolder, PCFile_name)
Exemple #25
0
def warning_interval_check(intInterval):
    t = s.Timing()
    t.add_interval(warning_check, intInterval)
    t.stt()
 def setup_class(self):
     self.timing = sun.Timing()