コード例 #1
0
ファイル: fcr_tools.py プロジェクト: gsquire1/automation
def switch_status():
    """
        Retrieve FCR fabric and return info. Variable #'s:
        0) Switch name
        1) IP address
        1) Chassis or Pizza Box
        2) VF or not
        3) FCR Enabled
        4) Base Configured
        
        return dictionary with {switch_name, ipaddr, chassis, vf_enabled, base, fcr_enabled}}
    """
    fcrinfo = anturlar.FcrInfo()
    si = anturlar.SwitchInfo()
    initial_checks = si.switch_status()
    print('\n\n' + '=' * 20)
    print("Switch Name :  %s" % initial_checks[0])
    print("IP address :  %s" % initial_checks[1])
    print("Chassis :  %s" % initial_checks[2])
    print("VF enabled :  %s" % initial_checks[3])
    print("FCR enabled :  %s" % initial_checks[4])
    print("Base configured :  %s" % initial_checks[5])
    print('=' * 20 + '\n\n')
    switch_info = {
        'switch_name': initial_checks[0],
        'ipaddr': initial_checks[1],
        'chassis': initial_checks[2],
        'vf_enabled': initial_checks[3],
        'fcr_enabled': initial_checks[4],
        'base': initial_checks[5]
    }
    return (switch_info)
コード例 #2
0
ファイル: fcr_tools.py プロジェクト: gsquire1/automation
def ex_slots_find():
    """
    Find EX/VEX ports and return slot number/port number.
    """
    fcri = anturlar.FcrInfo()
    fcipi = anturlar.FcipInfo()
    vex_port_list = fcri.vex_ports()
    ex_port_list = fcri.ex_ports()
    disabled_port_list = fcri.disabled_ports()
    ge_port_list = fcipi.all_ge_ports()
    print("PORTLISTPORTLIST")
    print("VEX_PORTS: %s" % vex_port_list)
    print("EX_PORTS: %s" % ex_port_list)
    print("DISABLED_PORTS: %s" % disabled_port_list)
    sys.exit(0)
    #################################

    if self.am_i_director:
        for i in portlist:
            slot = i[0]
            port = i[1]
            pattern = re.compile(r'(?:\EX\sPort\s+)(?P<state> ON)')
            cmd = fos_cmd("portcfgshow %a/%a" % (slot, port))
            ex = pattern.search(cmd)
            if ex:
                fos_cmd("portcfgexport %s/%s %s" % (slot, port, "-a2"))
    else:
        for i in portlist:
            pattern = re.compile(r'(?:\EX\sPort\s+)(?P<state> ON)')
            cmd = fos_cmd("portcfgshow %a" % i)
            ex = pattern.search(cmd)
            if ex:
                fos_cmd("portcfgexport " + i + " -a2")
        cmd_cap = fos_cmd("switchenable")
        return (cmd_cap)
コード例 #3
0
ファイル: fcr_tools.py プロジェクト: gsquire1/automation
def test_anturlar_functions():
    #a = ex_port_list()
    fcri = anturlar.FcrInfo()
    #fabi = anturlar.FabricInfo()
    #zones = anturlar.Zone()
    #si = anturlar.SwitchInfo()
    #su = cofra.SwitchUpdate()
    #a = fcri.__getportlist__("EX-Port")
    #b = fcri.all_ex_ports_with_edge_fid()
    print("1111111111111111111111111111111")
    #b = zones.def_zone()
    b = fcri.fcr_fab_wide_ip()
    print("2222222222222222222222222222222")
    print(b)
    sys.exit()
コード例 #4
0
ファイル: fcr_tools.py プロジェクト: gsquire1/automation
def fab_wide_proxy_device_numbers():
    """
    Retrieve number of proxy device on all backbone switches in fabric. Drop those numbers
    into a file for later retreival (e.g. say after reboot testing). Also return a
    dictionary (e.g {switch_ip: # of proxy devices})
    """

    fcrinfo = anturlar.FcrInfo()
    backbone_ip = fcrinfo.fcr_backbone_ip()
    print(backbone_ip)
    sys.exit()
    bb_fab_num = (len(backbone_ip))
    proxy_dev_count = []
    for ip in backbone_ip:
        anturlar.connect_tel_noparse(ip, 'root', 'password')
        base = fcrinfo.base_check()  # get the base FID number
        if base is not False:
            anturlar.fos_cmd("setcontext " + base)
            get_proxy = fcrinfo.fcr_proxy_dev()
            proxy_dev_count.extend(get_proxy)

        else:
            get_proxy = fcrinfo.fcr_proxy_dev()
            proxy_dev_count.extend(get_proxy)
    switch_list_with_proxy_dev = dict(zip(backbone_ip, proxy_dev_count))
    proxy_dev_count = (str(proxy_dev_count))
    f = ('logs/ProxyDev_Count.txt')
    ff = liabhar.FileStuff(f, 'w+b')  ###open new file or clobber old
    ff.write(proxy_dev_count)
    ff.close()
    print('\n\n' + '=' * 20)
    print('Backbone Fabric consists of %s switches.' % (len(bb_fab_num)))
    print('IP addresses: Number of proxy devices found')
    print(switch_list_with_proxy_dev)
    print('=' * 20 + '\n\n')
    return (switch_list_with_proxy_dev)
コード例 #5
0
ファイル: fcrtc_0.py プロジェクト: gsquire1/Python
def slotpower_off_on_check_devices():
    si = anturlar.SwitchInfo()
    fcrc = anturlar.FcrInfo()
    fi = anturlar.FcipInfo()

    ip_address = fcr_tools.all_switches_in_bb_ip()
    switch_info = fcr_tools.bb_fabric_switch_status()
    #blades = si.blades()
    #ex_ports = si.ex_ports()
    b = (len(switch_info))
    print("The number of switches in backbone is:", b)
    print('\n\n\n')
    print('IP addresses of all switches in Backbone:')
    print(ip_address)
    print('\n\n\n')
    for i in ip_address:
        print(i)
        anturlar.connect_tel_noparse(i, 'root', 'password')
        a = si.ex_ports()
        print(a)
        sys.exit(0)
        ex_port = a.append(a)
        print('EXPORTSEXPORTS')
        print(ex_port)
コード例 #6
0
def main():

    global tn

    ###############################################################################
    ####
    ####
    ####
    ###############################################################################
    pa = parse_args(sys.argv)
    #print(pa)
    #print(pa.chassis_name)
    #print(pa.ipaddr)
    #print(pa.quiet)
    #print(pa.verbose)
    #print(pa.firmware)
    #print("@"*40)
    #sys.exit()

    ##########################################################################
    ##########################################################################
    ###
    ### hold the ip address from the command line
    ###

    if pa.ipaddr:
        pa.chassis_name = console_info_from_ip(pa.ipaddr, pa.chassis_name)
    cons_info = console_info(pa.chassis_name)
    console_ip = cons_info[0]
    console_port = cons_info[1]

    power_pole_info = pwr_pole_info(pa.chassis_name)
    usr_pass = get_user_and_pass(pa.chassis_name)
    user_name = usr_pass[0]
    usr_psswd = usr_pass[1]

    tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd)
    fi = anturlar.FabricInfo()
    si = anturlar.SwitchInfo()
    su = cofra.SwitchUpdate()
    fcr = anturlar.FcrInfo()

    if pa.fabwide:
        ipaddr_switch = fi.ipv4_list()
    elif pa.csvall:
        ipaddr_switch = get_ip_from_file(pa.chassis_name)
    elif pa.fcrwide:
        anturlar.fos_cmd("setcontext %s" % fcr.base_check())
        ipaddr_switch = fcr.fcr_fab_wide_ip()
    else:
        ipaddr_switch = [pa.ipaddr]
    anturlar.close_tel()

    #### pass ip(s)to login procedure
    #### and write the file

    ##################################################################################################
    # Manual list of switches to run suppportftp against. Entire csv list is printed out above but the
    # list below overwries it.
    # This keeps bombing on AMP switch IP (not included below).
    ##################################################################################################
    ip_no_amp = [
        '10.38.36.240', '10.38.36.10', '10.38.36.33', '10.38.36.158',
        '10.38.36.249', '10.38.36.102', '10.38.36.246', '10.38.36.250',
        '10.38.36.98', '10.38.36.125', '10.38.36.25', '10.38.36.24',
        '10.38.36.111', '10.38.36.95', '10.38.36.85', '10.38.36.112'
    ]
    for i in ip_no_amp:
        try:
            tn = anturlar.connect_tel_noparse(i, user_name, usr_psswd)
        except OSError:
            print("Switch %s not available" % i)
        nos = si.nos_check()
        if not nos:
            anturlar.fos_cmd(
                "supportftp -s -h 10.39.2.171 -u ftp1 -p ftp2 -d ssaves -l ftp"
            )
            anturlar.fos_cmd("supportftp -e")
            anturlar.fos_cmd("supportftp -t 8")
            anturlar.fos_cmd(
                "tsclockserver 10.38.2.80; tstimezone America/Denver")
            anturlar.fos_cmd("echo Y | reboot")
            #anturlar.fos_cmd("tsclockserver LOCL")
        else:
            print("\n" + "@" * 40)
            print('\nTHIS IS A NOS SWITCH> SKIPPING')
            print("\n" + "@" * 40)
            pass
        # tn = su.reboot_reconnect()
        anturlar.close_tel()
    sys.exit()
コード例 #7
0
ファイル: fcr_tools.py プロジェクト: gsquire1/automation
def portcfgfillword():
    fcr = anturlar.FcrInfo()
    portcfg = fcr.portcfgfillword(3)
コード例 #8
0
def capture_switch_info(extend_name="", fid=128):
    """
    
    
    """

    si = anturlar.SwitchInfo()
    mi = anturlar.Maps()
    fi = anturlar.FlowV()
    fcr = anturlar.FcrInfo()

    vdx = si.nos_check()
    switch_ip = si.ipaddress()
    switch_cp_ips = si.cp_ipaddrs_get()

    license_list = si.getLicense()
    ls_list = si.ls()
    first_ls = si.ls_now()
    switch_id = si.switch_id()
    fid_now = si.currentFID()
    try:
        theswitch_name = si.switch_name()
    except IndexError:
        theswitch_name = "unknown"
        pass
    chassis_name = si.chassisname()
    director_pizza = si.director()
    vf_enabled = si.vf_enabled()
    sw_type = si.switch_type()
    base_sw = si.base_check()
    sim_ports = si.sim_ports()
    ex_ports = fcr.all_ex_ports()
    fcr_state = si.fcr_enabled()
    ports_and_ls = si.all_ports_fc_only()
    psw_reset_value = "YES"
    xisl_st_per_ls = si.allow_xisl()
    maps_policy_sum = mi.get_policies()
    maps_non_dflt_policy = mi.get_nondflt_policies()

    flow_per_ls = fi.flow_names()
    blades = si.blades()
    deflt_switch = si.default_switch()
    # sfp_info             = si.sfp_info()
    maps_email_cfg = mi.get_email_cfg()
    maps_actions = mi.get_actions()
    logical_groups = mi.logicalgroup_count()
    relay_server_info = mi.get_relay_server_info()
    credit_recov_info = mi.credit_recovery()
    dns_info = mi.dns_config_info()

    ###################################################################################################################
    ###################################################################################################################
    ####
    #### print the variables for review
    ####
    ###################################################################################################################
    ###################################################################################################################

    print("\n\n\n")
    print("SWITCH IP         :  %s  " % switch_ip)
    print("SWITCH NAME       :  %s  " % theswitch_name)
    # print("SWITCH DOMAIN     :  %s  " % domain_list)
    print("LS LIST           :  %s  " % ls_list)
    print("DEFAULT SWITCH    :  %s  " % deflt_switch)
    print("BASE SWITCH       :  %s  " % base_sw)
    print("EX_PORTS          :  %s  " % ex_ports)  ######################NEW
    print("VF SETTING        :  %s  " % vf_enabled)
    print("SWITCH TYPE       :  %s  " % sw_type)
    print("TIMEOUT VALUE     :  0   ")
    print("RESET PASSWORD    :  %s " % psw_reset_value)
    print("FCR ENABLED       :  %s " % fcr_state)
    print("BLADES            :  %s " % blades)
    print("LICENSE LIST      :  %s  " % license_list)

    #######################################################################################################################
    #######################################################################################################################
    #######################################################################################################################
    ####
    ####  Write to the file
    ####
    #######################################################################################################################
    #######################################################################################################################
    #######################################################################################################################

    # f = "%s%s%s" % ("logs/Switch_Info_cudc", switch_ip, "_%s.txt" % extend_name)
    f = "%s%s%s" % ("/home/runfromhere/logs/Switch_Info_cudc", switch_ip,
                    "_%s.txt" % extend_name)
    header = "%s%s%s%s" % ("\nSwitch_info_for_playback CAPTURE FILE \n", \
                           "", "", "==============================\n")
    ff = liabhar.FileStuff(f, 'w+b')  #### open the log file for writing
    ff.write(header)
    ###################################################################################################################
    ff.write("SWITCH IP                :  %s  \n" % switch_ip)
    ff.write("LS LIST                  :  %s  \n" % ls_list)
    ff.write("DEFAULT SWITCH           :  %s  \n" % deflt_switch)
    ff.write("BASE SWITCH              :  %s  \n" % base_sw)
    ff.write("EX_PORTS                 :  %s  \n" % ex_ports)
    ff.write("SWITCH NAME              :  %s  \n" % theswitch_name)
    ff.write("CHASSIS NAME             :  %s  \n" % chassis_name)
    ff.write("DIRECTOR STATUS          :  %s  \n" % director_pizza)
    ff.write("VF SETTING               :  %s  \n" % vf_enabled)
    ff.write("SWITCH TYPE              :  %s  \n" % sw_type)
    ff.write("TIMEOUT VALUE            :  0   \n")
    ff.write("RESET PASSWORD           :  %s  \n" % psw_reset_value)
    ff.write("FCR ENABLED              :  %s  \n" % fcr_state)
    ff.write("Ports                    :  %s  \n" % ports_and_ls)
    ff.write("SIM PORTS                :  %s  \n" % sim_ports)
    ff.write("Blades                   :  %s  \n" % blades)

    ff.write("LICENSE LIST             :  %s  \n" % license_list)
    #ff.write("SFP  INFO                :  %s  \n" % sfpinfo)
    ff.write("=" * 80)
    ff.write("\n")
    ff.write("MAPS POLICIES            :  %s  \n" % maps_policy_sum)
    ff.write("MAPS NON DFLT POLICIES   :  %s  \n" % maps_non_dflt_policy)
    ff.write("EMAIL CFG                :  %s  \n" % maps_email_cfg)
    ff.write("MAPS ACTIONS             :  %s  \n" % maps_actions)
    ff.write("LOGICAL GROUPS           :  %s  \n" % logical_groups)
    ff.write("RELAY SERVER HOST IP     :  %s  \n" % relay_server_info)
    ff.write("CREDIT RECOVERY INFO     :  %s  \n" % credit_recov_info)
    ff.write("DNS CONFIG INFO          :  %s  \n" % dns_info)
    ff.write("=" * 80)
    ff.write("\n")
    ff.write("FLOW CONFIGURATION       :  %s  \n" % flow_per_ls)
    ff.write("\n" * 2)
    ff.close()

    # cons_out             = anturlar.fos_cmd("setcontext %s " % fid_now)

    return (True)
コード例 #9
0
def main():

    global tn

    ###############################################################################
    ####
    ####
    ####
    ###############################################################################
    pa = parse_args(sys.argv)
    #print(pa)
    #print(pa.chassis_name)
    #print(pa.ipaddr)
    #print(pa.quiet)
    #print(pa.verbose)
    #print(pa.firmware)
    #print("@"*40)
    #sys.exit()

    ##########################################################################
    ##########################################################################
    ###
    ### hold the ip address from the command line
    ###

    if pa.ipaddr:
        pa.chassis_name = console_info_from_ip(pa.ipaddr, pa.chassis_name)
    cons_info = console_info(pa.chassis_name)
    console_ip = cons_info[0]
    console_port = cons_info[1]

    power_pole_info = pwr_pole_info(pa.chassis_name)
    usr_pass = get_user_and_pass(pa.chassis_name)
    user_name = usr_pass[0]
    usr_psswd = usr_pass[1]

    tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd)
    fi = anturlar.FabricInfo()
    si = anturlar.SwitchInfo()
    su = cofra.SwitchUpdate()
    fcr = anturlar.FcrInfo()

    if pa.fabwide:
        ipaddr_switch = fi.ipv4_list()
    elif pa.csvall:
        ipaddr_switch = get_ip_from_file(pa.chassis_name)
    elif pa.fcrwide:
        anturlar.fos_cmd("setcontext %s" % fcr.base_check())
        ipaddr_switch = fcr.fcr_fab_wide_ip()
    else:
        ipaddr_switch = [pa.ipaddr]
    anturlar.close_tel()

    #### pass ip(s)to login procedure
    #### and write the file

    for i in ipaddr_switch:
        try:  ###New
            tn = anturlar.connect_tel_noparse(i, user_name, usr_psswd)
        except OSError:  ##New
            print("Switch %s not available" % i)  ##New
        nos = si.nos_check()
        if not nos:
            anturlar.fos_cmd(
                "supportftp -s -h 10.38.35.131 -u ftp1 -p ftp2 -d ssaves -l ftp"
            )
            anturlar.fos_cmd("supportftp -e")
            anturlar.fos_cmd("supportftp -t 8")
            anturlar.fos_cmd(
                "tsclockserver 10.38.2.80; tstimezone America/Denver")
            #anturlar.fos_cmd("echo Y | reboot")
            #anturlar.fos_cmd("tsclockserver LOCL")
        else:
            print("\n" + "@" * 40)
            print('\nTHIS IS A NOS SWITCH> SKIPPING')
            print("\n" + "@" * 40)
            pass
        tn = su.reboot_reconnect()
        anturlar.close_tel()
    sys.exit()
コード例 #10
0
def main():

    global tn

    ###############################################################################
    ####
    ####
    ####
    ###############################################################################
    pa = parse_args(sys.argv)
    #print(pa)
    #print(pa.chassis_name)
    #print(pa.ipaddr)
    #print(pa.quiet)
    #print(pa.verbose)
    #print(pa.firmware)
    #print("@"*40)
    #sys.exit()

    ##########################################################################
    ##########################################################################
    ###
    ### hold the ip address from the command line
    ###
    #try:
    #    ipaddr_test = ipaddress.ip_address(pa.ipaddr)
    #    #print (ipaddr_test)
    #except ValueError:
    #    print("\nPLEASE CHECK YOUR IP ADDRESS AND TRY AGAIN")
    #    sys.exit()

    if pa.ipaddr:
        pa.chassis_name = console_info_from_ip(pa.ipaddr, pa.chassis_name)
    cons_info = console_info(pa.chassis_name)
    console_ip = cons_info[0]
    console_port = cons_info[1]

    power_pole_info = pwr_pole_info(pa.chassis_name)
    usr_pass = get_user_and_pass(pa.chassis_name)
    user_name = usr_pass[0]
    usr_psswd = usr_pass[1]

    tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd)
    fi = anturlar.FabricInfo()
    si = anturlar.SwitchInfo()
    fcr = anturlar.FcrInfo()

    if pa.fabwide:
        ipaddr_switch = fi.ipv4_list()
        #print(ipaddr_switch)
    elif pa.csvall:
        ipaddr_switch = get_ip_from_file(pa.chassis_name)
    elif pa.fcrwide:
        anturlar.fos_cmd("setcontext %s" % fcr.base_check())
        ipaddr_switch = fcr.fcr_fab_wide_ip()
    else:
        ipaddr_switch = [pa.ipaddr]

    anturlar.close_tel()

    #### pass ip(s)to login procedure
    #### and write the file

    ff = ""
    f = ("%s%s%s" % ("logs/Switch_Info_", pa.ipaddr, "_restore.txt"))
    #f = ("logs/Switch_Info_10.38.134.66_VF_Wedge.txt")
    #f = ("logs/Switch_Info_10.38.134.66_for_playback.txt")
    print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$")
    print(f)

    try:
        with open(f, 'r') as file:
            ff = file.read()
    except IOError:
        print("\n\nThere was a problem opening the file:", f)
        sys.exit()
    print(ff)

    #sys.exit()

    #for i in ipaddr_switch:
    #    tn = anturlar.connect_tel_noparse(i,user_name,usr_psswd)
    #    nos = si.nos_check()
    #    if not nos:
    #        sw_dict              = cofra.get_info_from_the_switch()
    #        switch_ip            = sw_dict["switch_ip"]
    #        sw_name              = sw_dict["switch_name"]
    #        sw_chass_name        = sw_dict["chassis_name"]
    #        sw_director_or_pizza = sw_dict["director"]
    #        sw_domains           = sw_dict["domain_list"]
    #        sw_ls_list           = sw_dict["ls_list"]
    #        sw_base_fid          = sw_dict["base_sw"]
    #        sw_xisl              = sw_dict["xisl_state"]
    #        sw_type              = sw_dict["switch_type"]
    #        sw_license           = sw_dict["license_list"]
    #        sw_vf_setting        = sw_dict["vf_setting"]
    #        sw_fcr_enabled       = sw_dict["fcr_enabled"]
    #        sw_port_list         = sw_dict["port_list"]
    #
    #        print("\n"*20)
    #        print("SWITCH IP            : %s   " % switch_ip)
    #        print("SWITCH NAME          : %s   " % sw_name)
    #        print("CHASSIS NAME         : %s   " % sw_chass_name)
    #        print("DIRECTOR             : %s   " % sw_director_or_pizza)
    #        print("SWITCH DOMAINS       : %s   " % sw_domains)
    #        print("LOGICAL SWITCH LIST  : %s   " % sw_ls_list)
    #        print("BASE FID             : %s   " % sw_base_fid)
    #        print("XISL STATE           : %s   " % sw_xisl)
    #        print("SWITCH TYPE          : %s   " % sw_type)
    #        print("LICENSE LIST         : %s   " % sw_license)
    #        print("VF SETTING           : %s   " % sw_vf_setting)
    #        print("FCR SETTING          : %s   " % sw_fcr_enabled)
    #        print("PORT LIST            : %s   " % sw_port_list)
    #        print("@"*40)
    #        print("CONSOLE INFO         : %s   " % cons_info)
    #        print("@"*40)
    #        print("POWER POLE INFO      : %s   " % power_pole_info)
    #        print("@"*40)
    #        print("\nSwitch_Info has been written this file in logs/Switch_Info_for_playback_%s.txt\n" % switch_ip)
    #        print("@"*40)
    #    else:
    #        print("\n"+"@"*40)
    #        print('\nTHIS IS A NOS SWITCH> SKIPPING')
    #        print("\n"+"@"*40)
    #        pass
    #anturlar.close_tel()
    #sys.exit()

    ###############################################################################
    ####
    ####  close telnet connection and
    ####  connect to the console
    ####
    ###############################################################################

    tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd)
    cc = cofra.SwitchUpdate()

    cons_out = cc.playback_licenses()
    cons_out = cc.playback_ls()
    cons_out = cc.playback_switch_names()
    cons_out = cc.playback_switch_domains()
    cons_out = cc.playback_add_ports()
    cons_out = cc.playback_fosconfig_fcr()
    tn = cc.reboot_reconnect()
    cons_out = anturlar.fos_cmd("switchshow")
    print(cons_out)
    anturlar.close_tel()
コード例 #11
0
ファイル: LsanZoneCheck.py プロジェクト: gsquire1/Python
def main():

    global tn

    ###############################################################################
    ####
    ####
    ####
    ###############################################################################
    pa = parse_args(sys.argv)
    #print(pa)
    #print(pa.chassis_name)
    #print(pa.ipaddr)
    #print(pa.quiet)
    #print(pa.verbose)
    #print(pa.firmware)
    #print("@"*40)
    #sys.exit()

    ##########################################################################
    ##########################################################################
    ###
    ### hold the ip address from the command line
    ###

    if pa.ipaddr:
        pa.chassis_name = console_info_from_ip(pa.ipaddr, pa.chassis_name)
    cons_info = console_info(pa.chassis_name)
    console_ip = cons_info[0]
    console_port = cons_info[1]

    power_pole_info = pwr_pole_info(pa.chassis_name)
    usr_pass = get_user_and_pass(pa.chassis_name)
    user_name = usr_pass[0]
    usr_psswd = usr_pass[1]

    tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd)
    fi = anturlar.FabricInfo()
    si = anturlar.SwitchInfo()
    fcr = anturlar.FcrInfo()

    if pa.fabwide:
        ipaddr_switch = fi.ipv4_list()
        #print(ipaddr_switch)
    elif pa.csvall:
        ipaddr_switch = get_ip_from_file(pa.chassis_name)
    elif pa.fcrwide:
        anturlar.fos_cmd("setcontext %s" % fcr.base_check())
        ipaddr_switch = fcr.fcr_fab_wide_ip()
    else:
        ipaddr_switch = [pa.ipaddr]
    anturlar.close_tel()

    #### pass ip(s)to login procedure
    #### and write the file

    for i in ipaddr_switch:
        tn = anturlar.connect_tel_noparse(i, user_name, usr_psswd)
        nos = si.nos_check()
        if not nos:
            fi = anturlar.FcrInfo()
            lsanzone = anturlar.fos_cmd("lsanzoneshow -s")
            fcrproxy = anturlar.fos_cmd("fcrproxydevshow")
            fcrresource = anturlar.fos_cmd("fcrresourceshow")
            print(lsanzone)
            print(fcrproxy)
            print(fcrresource)
            f1 = "%s%s%s" % ("logs/LsanZoneInfo_", pa.ipaddr, "_base.txt")
            a = os.path.isfile(f1)
            if not a:
                print("Not there. Capturing file now")
                header = "%s%s%s%s" % ("\nLsanZoneShow CAPTURE FILE \n",\
                           "","", "==============================\n")
                ff = liabhar.FileStuff(
                    f1, 'w+b')  #### open the log file for writing
                ff.write(header)
                ff.write(lsanzone)
                ff.write(fcrproxy)
                ff.write(fcrresource)
                sys.exit(0)
            else:
                f2 = "%s%s%s" % ("logs/LsanZoneInfo_", pa.ipaddr, "_after.txt")
                header = "%s%s%s%s" % ("\nLsanZoneShow CAPTURE FILE \n",\
                           "","", "==============================\n")
                ff = liabhar.FileStuff(
                    f2, 'w+b')  #### open the log file for writing
                ff.write(header)
                ff.write(lsanzone)
                ff.write(fcrproxy)
                ff.write(fcrresource)
                #sys.exit(0)

            #f0 = ("logs/LsanZoneInfo_",pa.ipaddr,"_base.txt")
            #f1 = ("logs/LsanZoneInfo_",pa.ipaddr,"_after.txt")
            diff = fcr_tools.file_diff(f1, f2)
            print("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
            print(diff)
            sys.exit()

            #sw_dict              = cofra.get_info_from_the_switch()
            #switch_ip            = sw_dict["switch_ip"]
            #sw_name              = sw_dict["switch_name"]
            #sw_chass_name        = sw_dict["chassis_name"]
            #sw_director_or_pizza = sw_dict["director"]
            #sw_domains           = sw_dict["domain_list"]
            #sw_ls_list           = sw_dict["ls_list"]
            #sw_base_fid          = sw_dict["base_sw"]
            #sw_xisl              = sw_dict["xisl_state"]
            #sw_type              = sw_dict["switch_type"]
            #sw_license           = sw_dict["license_list"]
            #sw_vf_setting        = sw_dict["vf_setting"]
            #sw_fcr_enabled       = sw_dict["fcr_enabled"]
            #sw_port_list         = sw_dict["port_list"]
            #
            #print("\n"*20)
            #print("SWITCH IP            : %s   " % switch_ip)
            #print("SWITCH NAME          : %s   " % sw_name)
            #print("CHASSIS NAME         : %s   " % sw_chass_name)
            #print("DIRECTOR             : %s   " % sw_director_or_pizza)
            #print("SWITCH DOMAINS       : %s   " % sw_domains)
            #print("LOGICAL SWITCH LIST  : %s   " % sw_ls_list)
            #print("BASE FID             : %s   " % sw_base_fid)
            #print("XISL STATE           : %s   " % sw_xisl)
            #print("SWITCH TYPE          : %s   " % sw_type)
            #print("LICENSE LIST         : %s   " % sw_license)
            #print("VF SETTING           : %s   " % sw_vf_setting)
            #print("FCR SETTING          : %s   " % sw_fcr_enabled)
            #print("PORT LIST            : %s   " % sw_port_list)
            #print("@"*40)
            #print("CONSOLE INFO         : %s   " % cons_info)
            #print("@"*40)
            #print("POWER POLE INFO      : %s   " % power_pole_info)
            #print("@"*40)
            #print("\nSwitch_Info has been written this file in logs/Switch_Info_%s_restore.txt\n" % switch_ip)
            #print("@"*40)
        else:
            print("\n" + "@" * 40)
            print('\nTHIS IS A NOS SWITCH> SKIPPING')
            print("\n" + "@" * 40)
            pass
    anturlar.close_tel()
    sys.exit()
コード例 #12
0
def main():

    global tn

    ###############################################################################
    ####
    ####
    ####
    ###############################################################################
    pa = parse_args(sys.argv)
    print(pa)
    #print(pa.chassis_name)
    #print(pa.ipaddr)
    #print(pa.quiet)
    #print(pa.verbose)
    #print(pa.firmware)
    print("@" * 40)
    #sys.exit()

    ##########################################################################
    ##########################################################################
    ###
    ### hold the ip address from the command line
    ###

    if pa.ipaddr:
        pa.chassis_name = console_info_from_ip(pa.ipaddr, pa.chassis_name)
    cons_info = console_info(pa.chassis_name)
    console_ip = cons_info[0]
    console_port = cons_info[1]

    power_pole_info = pwr_pole_info(pa.chassis_name)
    usr_pass = get_user_and_pass(pa.chassis_name)
    user_name = usr_pass[0]
    usr_psswd = usr_pass[1]

    tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd)
    fi = anturlar.FabricInfo()
    si = anturlar.SwitchInfo()
    fcr = anturlar.FcrInfo()

    if pa.fabwide:
        ipaddr_switch = fi.ipv4_list()
        #print(ipaddr_switch)
    elif pa.csvall:
        ipaddr_switch = get_ip_from_file(pa.chassis_name)
    elif pa.fcrwide:
        anturlar.fos_cmd("setcontext %s" % fcr.base_check())
        ipaddr_switch = fcr.fcr_fab_wide_ip()
    else:
        ipaddr_switch = [pa.ipaddr]
    anturlar.close_tel()

    #### pass ip(s)to login procedure
    #### and write the file

    for i in ipaddr_switch:
        tn = anturlar.connect_tel_noparse(i, user_name, usr_psswd)
        nos = si.nos_check()
        if not nos:

            def ex_deconfig():
                """
                Find all EX-Ports AND VEX-Ports on either director or pizzabox and deconfigure.
                This parses "portcfgshow" command for any EX-Port, online or not, and deconfigures. This includes
                VEX ports as well.
                """

            si = anturlar.SwitchInfo()
            anturlar.fos_cmd("switchdisable")
            portlist = si.all_ports()
            if si.am_i_director:
                for i in portlist:
                    slot = i[0]
                    port = i[1]
                    pattern = re.compile(r'(?:\EX\sPort\s+)(?P<state> ON)')
                    cmd = anturlar.fos_cmd("portcfgshow %a/%a" % (slot, port))
                    ex = pattern.search(cmd)
                    if ex:
                        anturlar.fos_cmd("portcfgexport %s/%s %s" %
                                         (slot, port, "-a 2"))
                        anturlar.fos_cmd("portcfgvexport %s/%s %s" %
                                         (slot, port, "-a 2"))
            else:
                for i in portlist:
                    print(i)
                    port = i[1]
                    pattern = re.compile(r'(?:\EX\sPort\s+)(?P<state> ON)')
                    cmd = anturlar.fos_cmd("portcfgshow %a" % port)
                    ex = pattern.search(cmd)
                    if ex:
                        anturlar.fos_cmd("portcfgexport %s %s" %
                                         (port, "-a 2"))
                        anturlar.fos_cmd("portcfgvexport %s %s" %
                                         (port, "-a 2"))
            cmd_cap = anturlar.fos_cmd("switchenable")
            print('\n\nAll EX_ports found are now deconfigured.')
    #return(cmd_cap)
    #    sw_dict              = cofra.get_info_from_the_switch()
    #    switch_ip            = sw_dict["switch_ip"]
    #    sw_name              = sw_dict["switch_name"]
    #    sw_chass_name        = sw_dict["chassis_name"]
    #    sw_director_or_pizza = sw_dict["director"]
    #    sw_domains           = sw_dict["domain_list"]
    #    sw_ls_list           = sw_dict["ls_list"]
    #    sw_base_fid          = sw_dict["base_sw"]
    #    sw_xisl              = sw_dict["xisl_state"]
    #    sw_type              = sw_dict["switch_type"]
    #    sw_license           = sw_dict["license_list"]
    #    sw_vf_setting        = sw_dict["vf_setting"]
    #    sw_fcr_enabled       = sw_dict["fcr_enabled"]
    #    sw_port_list         = sw_dict["port_list"]
    #
    #    print("\n"*20)
    #    print("SWITCH IP            : %s   " % switch_ip)
    #    print("SWITCH NAME          : %s   " % sw_name)
    #    print("CHASSIS NAME         : %s   " % sw_chass_name)
    #    print("DIRECTOR             : %s   " % sw_director_or_pizza)
    #    print("SWITCH DOMAINS       : %s   " % sw_domains)
    #    print("LOGICAL SWITCH LIST  : %s   " % sw_ls_list)
    #    print("BASE FID             : %s   " % sw_base_fid)
    #    print("XISL STATE           : %s   " % sw_xisl)
    #    print("SWITCH TYPE          : %s   " % sw_type)
    #    print("LICENSE LIST         : %s   " % sw_license)
    #    print("VF SETTING           : %s   " % sw_vf_setting)
    #    print("FCR SETTING          : %s   " % sw_fcr_enabled)
    #    print("PORT LIST            : %s   " % sw_port_list)
    #    print("@"*40)
    #    print("CONSOLE INFO         : %s   " % cons_info)
    #    print("@"*40)
    #    print("POWER POLE INFO      : %s   " % power_pole_info)
    #    print("@"*40)
    #    print("\nSwitch_Info has been written this file in logs/Switch_Info_for_playback_%s.txt\n" % switch_ip)
    #    print("@"*40)
        else:
            print("\n" + "@" * 40)
            print('\nTHIS IS A NOS SWITCH> SKIPPING')
            print("\n" + "@" * 40)
            pass
    anturlar.close_tel()
    sys.exit()

    ###############################################################################
    ####
    ####  close telnet connection and
    ####  connect to the console
    ####
    ###############################################################################

    cc = cofra.SwitchUpdate()

    cons_out = cc.playback_licenses()
    cons_out = cc.playback_ls()
    cons_out = cc.playback_switch_names()
    cons_out = cc.playback_switch_domains()
    cons_out = cc.playback_add_ports()
    tn = cc.reboot_reconnect()
    cons_out = anturlar.fos_cmd("switchshow")
    print(cons_out)
    anturlar.close_tel()
コード例 #13
0
def main():

    global tn

    ###############################################################################
    ####
    ####
    ####
    ###############################################################################
    pa = parse_args(sys.argv)
    #print(pa)
    #print(pa.chassis_name)
    #print(pa.ipaddr)
    #print(pa.quiet)
    #print(pa.verbose)
    #print(pa.firmware)
    #print("@"*40)
    #sys.exit()

    ##########################################################################
    ##########################################################################
    ###
    ### hold the ip address from the command line
    ###

    if pa.ipaddr:
        pa.chassis_name = console_info_from_ip(pa.ipaddr, pa.chassis_name)
    cons_info = console_info(pa.chassis_name)
    console_ip = cons_info[0]
    console_port = cons_info[1]

    power_pole_info = pwr_pole_info(pa.chassis_name)
    usr_pass = get_user_and_pass(pa.chassis_name)
    user_name = usr_pass[0]
    usr_psswd = usr_pass[1]

    tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd)
    fi = anturlar.FabricInfo()
    si = anturlar.SwitchInfo()
    fcr = anturlar.FcrInfo()

    if pa.fabwide:
        ipaddr_switch = fi.ipv4_list()
    elif pa.csvall:
        ipaddr_switch = get_ip_from_file(pa.chassis_name)
    elif pa.fcrwide:
        anturlar.fos_cmd("setcontext %s" % fcr.base_check())
        ipaddr_switch = fcr.fcr_fab_wide_ip()
    else:
        ipaddr_switch = [pa.ipaddr]
    anturlar.close_tel()

    #### pass ip(s)to login procedure
    #### and write the file

    for i in ipaddr_switch:
        try:
            tn = anturlar.connect_tel_noparse(i, user_name, usr_psswd)
        except OSError:
            print("Switch %s not available" % i)
        nos = si.nos_check()
        if not nos:
            print("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
            ports = fcr.all_ex_ports_with_edge_fid()
            devices = fcr.fcr_proxy_dev()
            #backbone_ip = fcr.fcr_backbone_ip()
            print("XXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
            f = ('logs/EX_PortFlapper.txt')
            try:
                with open(f, 'w') as file:
                    file.write("EX-Ports = %s\n" % str(ports))
                    file.write("Proxy Devices = %s\n" % str(devices))
                    #file.write("Backbone_IPs = %s\n" % str(backbone_ip))
            except IOError:
                print("\n\nThere was a problem opening the file:", f)
                sys.exit()
            file.close()
            for i in ports:
                slot = i[0]
                port = i[1]
                if slot:
                    anturlar.fos_cmd("portdisable %s/%s" % (slot, port))
                    liabhar.count_down(15)
                    anturlar.fos_cmd("portenable %s/%s" % (slot, port))
                    liabhar.count_down(15)
                else:
                    anturlar.fos_cmd("portdisable %s" % (port))
                    liabhar.count_down(15)
                    anturlar.fos_cmd("portenable %s" % (port))
                    liabhar.count_down(15)

                devices_check = fcr.fcr_proxy_dev()
                if devices_check != devices:
                    print("WTF")
                    #email_sender_html(you, me, subj, html_to_send, htmlfile_path = "" )
                    liabhar.email_sender_html("*****@*****.**",
                                              "*****@*****.**",
                                              "portflapper failed",
                                              "portflapper failed", "")
                    sys.exit()
            liabhar.email_sender_html("*****@*****.**",
                                      "*****@*****.**",
                                      "portflapper passed",
                                      "portflapper passed", "")
            sys.exit()

        else:
            print("\n" + "@" * 40)
            print('\nTHIS IS A NOS SWITCH> SKIPPING')
            print("\n" + "@" * 40)
            pass
    anturlar.close_tel()
    sys.exit()
コード例 #14
0
def main():

    global tn

    ###############################################################################
    ####
    ####
    ####
    ###############################################################################
    pa = parse_args(sys.argv)
    #print(pa)
    #print(pa.chassis_name)
    #print(pa.ipaddr)
    #print(pa.quiet)
    #print(pa.verbose)
    #print(pa.firmware)
    #print("@"*40)
    #sys.exit()

    ##########################################################################
    ##########################################################################
    ###
    ### hold the ip address from the command line
    ###
    #try:
    #    ipaddr_test = ipaddress.ip_address(pa.ipaddr)
    #    #print (ipaddr_test)
    #except ValueError:
    #    print("\nPLEASE CHECK YOUR IP ADDRESS AND TRY AGAIN")
    #    sys.exit()

    if pa.ipaddr:
        pa.chassis_name = console_info_from_ip(pa.ipaddr, pa.chassis_name)
    cons_info = console_info(pa.chassis_name)
    console_ip = cons_info[0]
    console_port = cons_info[1]

    power_pole_info = pwr_pole_info(pa.chassis_name)
    usr_pass = get_user_and_pass(pa.chassis_name)
    user_name = usr_pass[0]
    usr_psswd = usr_pass[1]

    tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd)
    fi = anturlar.FabricInfo()
    si = anturlar.SwitchInfo()
    fcr = anturlar.FcrInfo()

    if pa.fabwide:
        ipaddr_switch = fi.ipv4_list()
        #print(ipaddr_switch)
    elif pa.csvall:
        ipaddr_switch = get_ip_from_file(pa.chassis_name)
    elif pa.fcrwide:
        anturlar.fos_cmd("setcontext %s" % fcr.base_check())
        ipaddr_switch = fcr.fcr_fab_wide_ip()
    else:
        ipaddr_switch = [pa.ipaddr]
    anturlar.close_tel()

    #### pass ip(s)to login procedure
    #### and write the file

    for i in ipaddr_switch:
        try:  ###New
            tn = anturlar.connect_tel_noparse(i, user_name, usr_psswd)
        except OSError:  ##New
            print("Switch %s not available" % i)  ##New
        nos = si.nos_check()
        if not nos:
            sw_dict = cofra.get_info_from_the_switch("restore")
            switch_ip = sw_dict["switch_ip"]
            sw_name = sw_dict["switch_name"]
            sw_chass_name = sw_dict["chassis_name"]
            sw_director_or_pizza = sw_dict["director"]
            sw_domains = sw_dict["domain_list"]
            sw_ls_list = sw_dict["ls_list"]
            sw_base_fid = sw_dict["base_sw"]
            sw_xisl = sw_dict["xisl_state"]
            sw_type = sw_dict["switch_type"]
            sw_license = sw_dict["license_list"]
            sw_vf_setting = sw_dict["vf_setting"]
            sw_fcr_enabled = sw_dict["fcr_enabled"]
            sw_port_list = sw_dict["port_list"]
            sw_ex_port_list = sw_dict["ex_ports"]

            print("\n" * 20)
            print("SWITCH IP            : %s   " % switch_ip)
            print("SWITCH NAME          : %s   " % sw_name)
            print("CHASSIS NAME         : %s   " % sw_chass_name)
            print("DIRECTOR             : %s   " % sw_director_or_pizza)
            print("SWITCH DOMAINS       : %s   " % sw_domains)
            print("LOGICAL SWITCH LIST  : %s   " % sw_ls_list)
            print("BASE FID             : %s   " % sw_base_fid)
            print("XISL STATE           : %s   " % sw_xisl)
            print("SWITCH TYPE          : %s   " % sw_type)
            print("LICENSE LIST         : %s   " % sw_license)
            print("VF SETTING           : %s   " % sw_vf_setting)
            print("FCR SETTING          : %s   " % sw_fcr_enabled)
            print("PORT LIST            : %s   " % sw_port_list)
            print("EX_PORT_LIST         : %s   " % sw_ex_port_list)
            print("@" * 40)
            print("CONSOLE INFO         : %s   " % cons_info)
            print("@" * 40)
            print("POWER POLE INFO      : %s   " % power_pole_info)
            print("@" * 40)
            print(
                "\nSwitch_Info has been written this file in logs/test/Switch_Info_%s_restore.txt\n"
                % switch_ip)
            print("@" * 40)
        else:
            print("\n" + "@" * 40)
            print('\nTHIS IS A NOS SWITCH> SKIPPING')
            print("\n" + "@" * 40)
            pass
    anturlar.close_tel()
    sys.exit()

    ###############################################################################
    ####
    ####  close telnet connection and
    ####  connect to the console
    ####
    ###############################################################################

    cc = cofra.SwitchUpdate()

    cons_out = cc.playback_licenses()
    cons_out = cc.playback_ls()
    cons_out = cc.playback_switch_names()
    cons_out = cc.playback_switch_domains()
    cons_out = cc.playback_add_ports()
    tn = cc.reboot_reconnect()
    cons_out = anturlar.fos_cmd("switchshow")
    print(cons_out)
    anturlar.close_tel()
コード例 #15
0
ファイル: FCR_Enable_Disable.py プロジェクト: gsquire1/Python
def main():

    global tn

    ###############################################################################
    ####
    ####
    ####
    ###############################################################################
    pa = parse_args(sys.argv)
    #print("@"*40)
    #print(pa)
    #print(pa.chassis_name)
    #print(pa.ipaddr)
    #print(pa.quiet)
    #print(pa.verbose)
    #print(pa.firmware)
    #print("@"*40)
    #sys.exit()

    ##########################################################################
    ##########################################################################
    ###
    ### hold the ip address from the command line
    ###

    if pa.ipaddr:
        pa.chassis_name = console_info_from_ip(pa.ipaddr, pa.chassis_name)
    cons_info = console_info(pa.chassis_name)
    console_ip = cons_info[0]
    console_port = cons_info[1]

    power_pole_info = pwr_pole_info(pa.chassis_name)
    usr_pass = get_user_and_pass(pa.chassis_name)
    user_name = usr_pass[0]
    usr_psswd = usr_pass[1]

    tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd)
    fi = anturlar.FabricInfo()
    si = anturlar.SwitchInfo()
    fcr = anturlar.FcrInfo()

    if pa.fabwide:
        ipaddr_switch = fi.ipv4_list()
        #print(ipaddr_switch)
    elif pa.csvall:
        ipaddr_switch = get_ip_from_file(pa.chassis_name)
    elif pa.fcrwide:
        anturlar.fos_cmd("setcontext %s" % fcr.base_check())
        ipaddr_switch = fcr.fcr_fab_wide_ip()
    else:
        ipaddr_switch = [pa.ipaddr]
    anturlar.close_tel()

    #### pass ip(s)to login procedure
    #### and write the file

    for i in ipaddr_switch:
        tn = anturlar.connect_tel_noparse(i, user_name, usr_psswd)
        nos = si.nos_check()
        if not nos:
            sw_dict = cofra.get_info_from_the_switch()
            switch_ip = sw_dict["switch_ip"]
            sw_name = sw_dict["switch_name"]
            sw_chass_name = sw_dict["chassis_name"]
            sw_director_or_pizza = sw_dict["director"]
            sw_domains = sw_dict["domain_list"]
            sw_ls_list = sw_dict["ls_list"]
            sw_base_fid = sw_dict["base_sw"]
            sw_xisl = sw_dict["xisl_state"]
            sw_type = sw_dict["switch_type"]
            sw_license = sw_dict["license_list"]
            sw_vf_setting = sw_dict["vf_setting"]
            sw_fcr_enabled = sw_dict["fcr_enabled"]
            sw_port_list = sw_dict["port_list"]

            print("\n" * 20)
            print("SWITCH IP            : %s   " % switch_ip)
            print("SWITCH NAME          : %s   " % sw_name)
            print("CHASSIS NAME         : %s   " % sw_chass_name)
            print("DIRECTOR             : %s   " % sw_director_or_pizza)
            print("SWITCH DOMAINS       : %s   " % sw_domains)
            print("LOGICAL SWITCH LIST  : %s   " % sw_ls_list)
            print("BASE FID             : %s   " % sw_base_fid)
            print("XISL STATE           : %s   " % sw_xisl)
            print("SWITCH TYPE          : %s   " % sw_type)
            print("LICENSE LIST         : %s   " % sw_license)
            print("VF SETTING           : %s   " % sw_vf_setting)
            print("FCR SETTING          : %s   " % sw_fcr_enabled)
            print("PORT LIST            : %s   " % sw_port_list)
            print("@" * 40)
            print("CONSOLE INFO         : %s   " % cons_info)
            print("@" * 40)
            print("POWER POLE INFO      : %s   " % power_pole_info)
            print("@" * 40)
            print(
                "\nSwitch_Info has been written this file in logs/Switch_Info_for_playback_%s.txt\n"
                % switch_ip)
            print("@" * 40)
        else:
            print("\n" + "@" * 40)
            print('\nTHIS IS A NOS SWITCH> SKIPPING')
            print("\n" + "@" * 40)
            pass
    #anturlar.close_tel()
    #sys.exit()

###############################################################################
####
####  close telnet connection and
####  connect to the console
####
###############################################################################
    fcrstate = fcr_state(fcr)
    if fcrstate is True:
        result = fcr_state_persist_enabled_switch_disable(fcr, si)
        print("RESULTFROMSWITCH_DISABLE")
        print(result)
        if result is None:
            print("SUCCESS")
            fcr_state_persist_enabled_hareboot(fcr, si)
        else:
            print("FAILED")
            sys.exit(0)
コード例 #16
0
ファイル: fcrtc_1.py プロジェクト: gsquire1/Python
def tc_22_2_1_2(ftp_ip, ftp_user, ftp_pass, clear=0):
    """
    Test Case(s)   22.2.1.2.1, 22.2.1.2.2, 22.2.1.2.3
    Title:      FCR Enable/Disable
    Feature:    FCR 
    Enabling and disabling the FCR service
        
    """
    ###########################################################################
    ####  todo -
    ####
    ####   1.  pass / fail for each step of test case
    ####       make the test_result a list of list [ step_0 pass ][step_2 fail]
    ####   2.  ignore chassis rules on a pizza box
    ####   3.  configupload will be tested as the config will be reset to default and then put back down
    ####
    ###########################################################################
    ####
    ####  steps
    ####
    ####  1. Do configupload
    ####  2. Do config default
    ####  3. Default status (tc 2.1.2.3)
    ####  4. FCR Functionality Persist (tc 2.1.2.1)
    ####  5. Config EX ports
    ####  6. FCR disable with EX/VEX ports enabled
    ####  7. Put switch back to original config
    ####
    #### start the test

    test_numb = "22.2.1.2"
    test_summary = "%s    FCR" % test_numb
    header = maps_tools.format_header(test_summary)
    test_result = ""

    p = anturlar.Maps()
    cs = anturlar.configSwitch()
    si = anturlar.SwitchInfo()
    fcrinfo = anturlar.FcrInfo()
    sut_ip = p.ipaddress()
    sw_rules = p.get_rules()
    sw_status = si.__sw_basic_info__()

    ###### set up the log file info
    ##f_path = '/home/RunFromHere/logs/%s_%s' % (test_numb, sut_ip)
    ##f = open(f_path, 'w+b')
    ##f.write(bytes(header, 'UTF-8'))
    ##
    ##### configupload
    ##cfgupload_status = cofra.cfgupload(ftp_ip, ftp_user, ftp_pass, clear = 0)
    ##if "Terminated" in cfgupload_status:
    ##    print("\n"+"#"*80+"\n")
    ##    print('Could not connect to remote host. Configupload failed')
    ##    print("#"*80+"\n")
    ##    f.write(bytes(cfgupload_status, 'UTF-8'))
    ##    sys.exit()
    ##else:
    ##    f.write(bytes(cfgupload_status, 'UTF-8'))
    ##
    ##### configdefault
    ##cfgdflt = cs.config_default()

    ### Check if FCR Status is disabled (default setting)
    fcr_status = si.fcr_enabled()
    ##if fcr_status is True:
    ##    print("\n"+"*"*80+"\n")
    ##    print('FC Routing Service is still enabled. Test Failed')
    ##    print("*"*80+"\n")
    ##    f.write(bytes(fcr_status, 'UTF-8'))
    ##    sys.exit()
    ##else:
    ##    print("\n"+"*"*80+"\n")
    ##    print('FC Routing Service is disabled as it should be.')
    ##    print("*"*80+"\n")
    ##    f.write(bytes(fcr_status, 'UTF-8'))

    # FCR Functionality Persist
    if fcr_status is True:
        print('FCR IS ENABLED')
    else:
        anturlar.fos_cmd("fosconfig --enable fcr")

    #fcr_state = fcrinfo.fcr_state_persist_enabled()
    #if fcr_state == True:
    #    print('TRUE')
    #else:
    #    print("FALSE")

    ####### This should be last bit of code as it puts switch back to starting config
    #cfgdownload_status = cofra.cfgdownload(ftp_ip, ftp_user, ftp_pass, clear = 0)
    #if "Terminated" in cfgdownload_status:
    #    print("\n"+"*"*80+"\n")
    #    print('Could not connect to remote host. Configdownload failed')
    #    print("*"*80+"\n")
    #    f.write(bytes(cfgdownload_status, 'UTF-8'))
    #else:
    #    f.write(bytes(cfgdownload_status, 'UTF-8'))
    #    f.write(bytes("\n"+"*"*80+"\n", 'UTF-8'))
    #    f.write(bytes("ALL TESTS PASSED\n", 'UTF-8'))
    #    f.write(bytes("*"*80+"\n", 'UTF-8'))
    #    f.close()
    #    print("*"*80+"\n")
    #    print("\n"+"*"*80+"\n")
    #    print("ALL TESTS PASSED\n")
    #    print("*"*80+"\n")
    #    state = si.switch_state()
    #    if state == "Offline":
    #        anturlar.fos_cmd("switchenable")
    #    else:
    #        pass
    sys.exit()

    ###############################################################################
    #STEVE'S EXAMPLE
    ####################

    #p = anturlar.Maps()
    #sut_ip = p.ipaddress()
    #sw_rules = p.get_rules()

    #### set up the log file info
    #f_path = '/home/run_from_here/logs/%s_%s' % (test_numb, sut_ip)
    #
    #f = liabhar.FileStuff(f_path, 'w+b')
    #f.write(header)

    #sw_rules = str(sw_rules)
    #sw_rules = sw_rules.replace("'", "") #### remove ' from string
    #sw_rules = sw_rules.replace("[", "") #### remove open bracket
    #sw_rules = sw_rules.replace("]", "") #### remove ending bracket
    df_rules = maps_tools.maps_default_rule()

    sw_rules = sw_rules.split()
    df_rules = df_rules.split()

    count_df = len(df_rules)
    count = len(sw_rules)
    if count < count_df:
        loop_count = count
    else:
        loop_count = count_df
    i = 0
    rule_differ = 0
    while i < loop_count:
        print("\n\ncomparing switch rule with default rule ")
        print("%s      %s " % (sw_rules[i], i))
        if sw_rules[i] not in df_rules:
            rule_differ += 1
            test_result += sw_rules[i]
            test_result += ' step1'
            test_result += ' Fail\n'
            print("\nFail Fail Fail Fail\n\n")

        i += 1

    print("The number of rules that differ are %s " % rule_differ)
    print("The number of additional rules on the switch %s " %
          (count - count_df))
    print(len(sw_rules))
    print(len(df_rules))
    #f.write(bytes(header, 'UTF-8'))
    #f.write(bytes("The number of rules that differ are %s \r\n" % rule_differ, 'UTF-8')
    f.write("The number of additional rules on the switch %s \r\n" %
            (count - count_df))
    f.write("Total number of switch rules    %s  \r\n" % len(sw_rules))
    f.write("Total number of default rules   %s  \r\n" % len(df_rules))

    if test_result == "":
        test_result = "PASS"

    print("=" * 80)
    print("\n\nTEST RESULTS FOR Test Case   25.01.01.03.01 ")
    print(test_result)
    f.write(maps_tools.format_results(test_summary, test_result))

    return (test_result)