def test_NCS1K_2_connection_refused(self):
        urls = ["telnet://*****:*****@127.0.0.1:10024"]
        self.conn = condoor.Connection("host", urls, log_session=self.log_session, log_level=0)
        with self.assertRaises(condoor.ConnectionError):
            self.conn.discovery(self.logfile_condoor)

        self.conn.disconnect()
Beispiel #2
0
 def start(self, ctx):
     conn = condoor.Connection(ctx.hostname, ctx.host_urls)
     try:
         conn.connect()
         ctx.success = True
     except condoor.ConnectionError as e:
         pass
Beispiel #3
0
    def start(self, ctx):
        conn = condoor.Connection(ctx.host.hostname,
                                  ctx.host_urls,
                                  log_dir=ctx.log_directory)
        try:
            conn.discovery()
        except condoor.GeneralError as e:
            ctx.post_status = e.message
            return

        try:
            conn.connect()

            if conn.os_type == "XR":
                ctx.inactive_cli = conn.send('sh install inactive summary')
                ctx.active_cli = conn.send('sh install active summary')
                ctx.committed_cli = conn.send('sh install committed summary')
            elif conn.os_type == "eXR":
                ctx.inactive_cli = conn.send('sh install inactive')
                ctx.active_cli = conn.send('sh install active')
                ctx.committed_cli = conn.send('sh install committed')

            self.get_software(ctx)
            ctx.success = True

        except condoor.GeneralError as e:
            ctx.post_status = e.message

        finally:
            conn.disconnect()
Beispiel #4
0
    def test_ASR9K_3_connection_wrong_user(self):
        """ASR9k: Test wrong username"""
        urls = ["telnet://*****:*****@127.0.0.1:10023"]
        self.conn = condoor.Connection("host", urls, log_session=self.log_session, log_level=self.log_level)

        with self.assertRaises(condoor.ConnectionAuthenticationError):
            self.conn.connect(self.logfile_condoor)
    def test_ASR903_4_connection_wrong_enable_password(self):
        """ASR903: Test wrong enable password"""
        urls = ["telnet://:[email protected]:10026/?enable_password=admin"]
        self.conn = condoor.Connection("host", urls, log_session=self.log_session, log_level=self.log_level)

        with self.assertRaises(condoor.ConnectionAuthenticationError):
            self.conn.connect(self.logfile_condoor)
    def test_NCS540_1_discovery(self):

        remove_cache_file()

        urls = ["telnet://*****:*****@127.0.0.1:10023"]
        conn = condoor.Connection("host", urls, log_session=self.log_session, log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)

        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "ios", "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "NCS540", "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "N540", "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "eXR", "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "6.3.2.09I", "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "Rack 0", "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(conn.udi['description'], "NCS 540 Series 24x1/10GE, 8x10/25GE, 2x100GE Fixed Chassis",
                         "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "N540-24Z8Q2C-M", "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "V01", "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "FOC2118R11N", "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "RP/0/RP0/CPU0:ios#", "Wrong Prompt: {}".format(conn.prompt))
        with self.assertRaises(condoor.CommandSyntaxError):
            conn.send("wrongcommand")

        conn.disconnect()
    def test_NCS1K_3_connection_wrong_user(self):
        urls = ["telnet://*****:*****@127.0.0.1:10023"]
        self.conn = condoor.Connection("host", urls, log_session=self.log_session, log_level=0)
        with self.assertRaises(condoor.ConnectionAuthenticationError):
            self.conn.discovery(self.logfile_condoor)

        self.conn.disconnect()
    def test_ASR903_1_discovery(self):
        """ASR903: Test the connection and discovery"""

        remove_cache_file()

        urls = ["telnet://*****:*****@127.0.0.1:10026/?enable_password=admin"]
        conn = condoor.Connection("host", urls, log_session=self.log_session, log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)

        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "PAN-5205-ASR903", "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "ASR900", "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "ASR-903", "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "XE", "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "03.18.00.S", "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "Chassis", "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(conn.udi['description'], "ASR 903 Series Router Chassis",
                         "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "ASR-903", "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "V01", "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "FOX1717P569", "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "PAN-5205-ASR903#", "Wrong Prompt: {}".format(conn.prompt))
        with self.assertRaises(condoor.CommandSyntaxError):
            conn.send("wrongcommand")

        conn.disconnect()
    def test_NCS1K_1_discovery(self):
        """NCS1k: Test the connection and discovery"""

        remove_cache_file()

        urls = ["telnet://*****:*****@127.0.0.1:10023"]
        conn = condoor.Connection("host", urls, log_session=self.log_session, log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)

        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "ios", "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "NCS1K", "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "NCS1002", "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "eXR", "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "6.0.1", "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "Rack 0", "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(conn.udi['description'], "Network Convergence System 1000 Controller",
                         "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "NCS1002", "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "V01", "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "CHANGE-ME-", "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "RP/0/RP0/CPU0:ios#", "Wrong Prompt: {}".format(conn.prompt))

        with self.assertRaises(condoor.CommandSyntaxError):
            conn.send("wrongcommand")

        conn.disconnect()
Beispiel #10
0
    def test_ASR9K_2_rediscovery(self):
        """ASR9k: Test whether the cached information is used"""
        urls = ["telnet://*****:*****@127.0.0.1:10023"]
        conn = condoor.Connection("host", urls, log_session=self.log_session, log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)

        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "ios", "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "ASR9K", "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "ASR-9904", "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "XR", "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "5.3.3", "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "chassis ASR-9904-AC", "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(conn.udi['description'], "ASR 9904 2 Line Card Slot Chassis with V2 AC PEM",
                         "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "ASR-9904-AC", "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "V01", "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "FOX1830GT5W", "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "RP/0/RP0/CPU0:ios#", "Wrong Prompt: {}".format(conn.prompt))
        self.assertEqual(conn.is_console, False, "Console: {}".format(conn.is_console))

        with self.assertRaises(condoor.CommandSyntaxError):
            conn.send("wrongcommand")

        conn.disconnect()
Beispiel #11
0
 def test_ASR9K_4_connection_refused(self):
     """ASR9k: Test when the connection is refused"""
     urls = ["telnet://*****:*****@127.0.0.1:10024"]
     self.conn = condoor.Connection("host",
                                    urls,
                                    log_session=self.log_session,
                                    log_level=self.log_level)
     with self.assertRaises(condoor.ConnectionError):
         self.conn.connect(self.logfile_condoor)
Beispiel #12
0
 def start(self, ctx):
     conn = condoor.Connection(ctx.hostname, ctx.host_urls, log_dir=ctx.log_directory, log_level=logging.DEBUG)
     try:
         conn.connect()
         ctx.success = True
     except (condoor.ConnectionError, condoor.GeneralError) as e:
         logger.error(str(e))
         raise e
     finally:
         conn.disconnect()
Beispiel #13
0
    def test_ASR9K64_4_connection_refused(self):
        urls = ["telnet://*****:*****@127.0.0.1:10024"]
        self.conn = condoor.Connection('host',
                                       urls,
                                       log_session=self.log_session,
                                       log_level=self.log_level)
        with self.assertRaises(condoor.ConnectionError):
            self.conn.connect(self.logfile_condoor)

        self.conn.disconnect()
Beispiel #14
0
    def test_ASR9K64_3_connection_wrong_user(self):
        urls = ["telnet://*****:*****@127.0.0.1:10022"]
        self.conn = condoor.Connection('host',
                                       urls,
                                       log_session=self.log_session,
                                       log_level=self.log_level)

        with self.assertRaises(condoor.ConnectionAuthenticationError):
            self.conn.connect(self.logfile_condoor)

        self.conn.disconnect()
Beispiel #15
0
    def test_sun_connection_wrong_passowrd(self):
        urls = [
            "telnet://*****:*****@127.0.0.1:10023",
            "telnet://*****:*****@host1"
        ]
        conn = condoor.Connection("host",
                                  urls,
                                  log_session=self.log_session,
                                  log_level=self.log_level)

        with self.assertRaises(condoor.ConnectionAuthenticationError):
            conn.connect(self.logfile_condoor)

        conn.disconnect()
Beispiel #16
0
def discover_platform_info(ctx):
    conn = condoor.Connection(ctx.hostname, ctx.host_urls)

    try:
        conn.discovery()
        ctx.host.family = conn.family
        ctx.host.platform = conn.platform
        ctx.host.software_platform = get_software_platform(family=conn.family, os_type=conn.os_type)
        ctx.host.software_version = get_software_version(conn.os_version)
        ctx.host.os_type = conn.os_type
        ctx.db_session.commit()
    except condoor.ConnectionError as e:
        pass
    finally:
        conn.disconnect()
Beispiel #17
0
    def test_sun_connection(self):

        remove_cache_file()

        urls = [
            "telnet://*****:*****@127.0.0.1:10023",
            "telnet://*****:*****@host1"
        ]
        conn = condoor.Connection("host",
                                  urls,
                                  log_session=self.log_session,
                                  log_level=self.log_level)

        with self.assertRaises(condoor.ConnectionTimeoutError):
            conn.connect(self.logfile_condoor)

        conn.disconnect()
Beispiel #18
0
    def test_XR12K_1_discovery(self):
        """ASR9k: Test the connection and discovery"""

        remove_cache_file()

        urls = ["telnet://*****:*****@127.0.0.1:10023"]
        conn = condoor.Connection("host",
                                  urls,
                                  log_session=self.log_session,
                                  log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)

        # TODO: Test if device_info is correct
        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "GSR-PE19",
                         "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "XR12K",
                         "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "GSR16",
                         "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "XR",
                         "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "4.2.1",
                         "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "Chassis",
                         "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(
            conn.udi['description'], "Cisco 12416 320 Gbps",
            "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "GSR16/320",
                         "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "1.0",
                         "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "TBM12077586",
                         "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "RP/0/7/CPU0:GSR-PE19#",
                         "Wrong Prompt: {}".format(conn.prompt))
        self.assertEqual(conn.is_console, False,
                         "Console: {}".format(conn.is_console))

        with self.assertRaises(condoor.CommandSyntaxError):
            conn.send("wrongcommand")

        conn.disconnect()
    def test_C4500X_1_discovery(self):

        remove_cache_file()

        urls = ["telnet://*****:*****@127.0.0.1:10024"]
        conn = condoor.Connection("host",
                                  urls,
                                  log_session=self.log_session,
                                  log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)

        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "Switch",
                         "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "C4500-X",
                         "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "WS-C4500X-32",
                         "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "XE",
                         "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "03.08.03.E",
                         "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "Switch System",
                         "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(
            conn.udi['description'],
            "Cisco Systems, Inc. WS-C4500X-32 2 slot switch",
            "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "",
                         "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "",
                         "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "JAE154100BA",
                         "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "Switch#",
                         "Wrong Prompt: {}".format(conn.prompt))
        self.assertEqual(conn.is_console, False,
                         "Console connection not detected")
        with self.assertRaises(condoor.CommandSyntaxError):
            conn.send("wrongcommand")

        conn.disconnect()
    def test_NCS6K_1_discovery(self):

        remove_cache_file()

        urls = ["telnet://*****:*****@127.0.0.1:10033"]
        conn = condoor.Connection("host",
                                  urls,
                                  log_session=self.log_session,
                                  log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)
        print(conn.device_info)

        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "sdr_1",
                         "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "NCS6K",
                         "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "PROTO-L-CHASSIS",
                         "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "eXR",
                         "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "6.5.1.09I",
                         "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "Rack 0",
                         "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(
            conn.udi['description'],
            "Cisco PANINI Proto 8-Slots Line Card Chassis",
            "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "PROTO-L-CHASSIS",
                         "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "V01",
                         "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "FMP12180270",
                         "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "RP/0/RP0/CPU0:sdr_1#",
                         "Wrong Prompt: {}".format(conn.prompt))
        with self.assertRaises(condoor.CommandSyntaxError):
            conn.send("wrongcommand")

        conn.disconnect()
    def test_NX9K_1_discovery(self):

        remove_cache_file()

        urls = ["telnet://*****:*****@127.0.0.1:10024"]
        conn = condoor.Connection("host",
                                  urls,
                                  log_session=self.log_session,
                                  log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)

        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "switch",
                         "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "N9K",
                         "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "N9K-C9508",
                         "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "NX-OS",
                         "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "7.0(3)IED5(1)",
                         "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "Chassis",
                         "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(
            conn.udi['description'], "Nexus9000 C9508 (8 Slot) Chassis",
            "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "N9K-C9508",
                         "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "V01",
                         "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "FGE18210BQR",
                         "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "switch#",
                         "Wrong Prompt: {}".format(conn.prompt))
        self.assertEqual(conn.is_console, True,
                         "Console connection not detected")
        with self.assertRaises(condoor.CommandSyntaxError):
            conn.send("wrongcommand")

        conn.disconnect()
Beispiel #22
0
    def test_ASR920_1_discovery(self):
        """ASR920: Test the connection and discovery"""

        remove_cache_file()

        urls = ["telnet://*****:*****@127.0.0.1:10027/?enable_password=admin"]
        conn = condoor.Connection("host",
                                  urls,
                                  log_session=self.log_session,
                                  log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)

        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "CSG-5502-ASR920",
                         "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "ASR900",
                         "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "ASR-920",
                         "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "XE",
                         "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "03.16.00.S",
                         "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "Chassis",
                         "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(
            conn.udi['description'],
            "Cisco ASR920 Series - 12GE and 2-10GE - AC model",
            "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "ASR-920-12CZ-A",
                         "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "V01",
                         "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "CAT1928U2YX",
                         "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "CSG-5502-ASR920#",
                         "Wrong Prompt: {}".format(conn.prompt))
        with self.assertRaises(condoor.CommandSyntaxError):
            conn.send("wrongcommand")

        conn.disconnect()
Beispiel #23
0
    def test_ASR9K64_1_discovery(self):
        """ASR9k-64: Test whether the cached information is not used"""

        remove_cache_file()

        urls = ["telnet://*****:*****@127.0.0.1:10022"]
        conn = condoor.Connection('host',
                                  urls,
                                  log_session=self.log_session,
                                  log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)
        print(conn.device_info)

        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "ios",
                         "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "ASR9K",
                         "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "ASR-9904",
                         "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "eXR",
                         "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "6.2.1.11I",
                         "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "Rack 0",
                         "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(
            conn.udi['description'], "ASR-9904 AC Chassis",
            "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "ASR-9904-AC",
                         "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "V01",
                         "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "FOX1739G95R",
                         "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "RP/0/RP0/CPU0:ios#",
                         "Wrong Prompt: {}".format(conn.prompt))
        with self.assertRaises(condoor.CommandSyntaxError):
            conn.send("wrongcommand")

        conn.disconnect()
Beispiel #24
0
def run(url, cmd, log_path, log_level, log_session, force_discovery, print_info):
    """Main function."""
    log_level = log_levels[log_level]
    conn = condoor.Connection("host", list(url), log_session=log_session, log_level=log_level, log_dir=log_path)
    try:
        conn.connect(force_discovery=force_discovery)
        if print_info:
            echo_info(conn)

        for command in cmd:
            result = conn.send(command)
            print("\nCommand: {}".format(command))
            print("Result: \n{}".format(result))
    except (condoor.ConnectionError, condoor.ConnectionAuthenticationError, condoor.ConnectionTimeoutError,
            condoor.InvalidHopInfoError, condoor.CommandSyntaxError, condoor.CommandTimeoutError,
            condoor.CommandError, condoor.ConnectionError) as excpt:
        click.echo(excpt)
    finally:
        conn.disconnect()
    return
Beispiel #25
0
def discover_platform_info(ctx):
    try:
        log_dir = os.path.join(get_log_directory(), create_log_directory(ctx.host.connection_param[0].host_or_ip))
    except Exception:
        log_dir = None

    """Discover platform when added to CSM."""
    conn = condoor.Connection(name=ctx.hostname, urls=ctx.host_urls, log_level=logging.CRITICAL, log_dir=log_dir)
    try:
        conn.connect(force_discovery=True)
        ctx.host.family = conn.family
        ctx.host.platform = conn.platform
        ctx.host.software_platform = get_software_platform(family=conn.family, os_type=conn.os_type)
        ctx.host.software_version = get_software_version(conn.os_version)
        ctx.host.os_type = conn.os_type
        ctx.db_session.commit()
    except condoor.ConnectionError as e:
        logger.error(str(e))
    finally:
        conn.disconnect()
Beispiel #26
0
    def test_ASR901_1_discovery(self):
        """ASR901: Test the connection and discovery"""

        remove_cache_file()

        urls = ["telnet://*****:*****@127.0.0.1:10025/?enable_password=admin"]
        conn = condoor.Connection("host",
                                  urls,
                                  log_session=self.log_session,
                                  log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)

        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "CSG-1202-ASR901",
                         "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "ASR900",
                         "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "A901",
                         "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "IOS",
                         "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "15.3(2)S1",
                         "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "A901-6CZ-FT-A Chassis",
                         "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(
            conn.udi['description'], "A901-6CZ-FT-A Chassis",
            "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "A901-6CZ-FT-A",
                         "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "V01",
                         "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "CAT1650U01P",
                         "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "CSG-1202-ASR901#",
                         "Wrong Prompt: {}".format(conn.prompt))
        with self.assertRaises(condoor.CommandSyntaxError):
            conn.send("wrongcommand")

        conn.disconnect()
    def test_NX7700C_2_rediscovery(self):

        urls = ["telnet://*****:*****@127.0.0.1:10026"]
        conn = condoor.Connection("host",
                                  urls,
                                  log_session=self.log_session,
                                  log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)

        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "switch",
                         "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "Nexus7000",
                         "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "N77-C7706",
                         "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "NX-OS",
                         "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "8.1(2a)",
                         "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "Chassis",
                         "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(
            conn.udi['description'], "Nexus7700 C7706 (6 Slot) Chassis",
            "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "N77-C7706",
                         "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "V01",
                         "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "FXS1824Q0SE",
                         "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "switch#",
                         "Wrong Prompt: {}".format(conn.prompt))
        self.assertEqual(conn.is_console, True,
                         "Console connection not detected")
        with self.assertRaises(condoor.CommandSyntaxError):
            conn.send("wrongcommand")

        conn.disconnect()
    def test_NCS5500_2_rediscovery(self):

        urls = ["telnet://*****:*****@127.0.0.1:10023"]
        conn = condoor.Connection("host",
                                  urls,
                                  log_session=self.log_session,
                                  log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)

        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "ios",
                         "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "NCS5500",
                         "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "NCS-5508",
                         "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "eXR",
                         "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "6.0.1",
                         "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "Rack 0",
                         "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(
            conn.udi['description'], "NCS5500 8 Slot Single Chassis",
            "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "NCS-5508",
                         "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "V01",
                         "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "FGE194714QX",
                         "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "RP/0/RP0/CPU0:ios#",
                         "Wrong Prompt: {}".format(conn.prompt))
        with self.assertRaises(condoor.CommandSyntaxError):
            conn.send("wrongcommand")

        conn.disconnect()
Beispiel #29
0
    def test_NCS4K_2_discovery(self):
        """NCS4k: Test whether the cached information is used"""

        urls = ["telnet://*****:*****@127.0.0.1:10023"]
        conn = condoor.Connection("host", urls, log_session=self.log_session, log_level=self.log_level)
        self.conn = conn
        conn.connect(self.logfile_condoor)

        self.assertEqual(conn.is_discovered, True, "Not discovered properly")
        self.assertEqual(conn.hostname, "ios", "Wrong Hostname: {}".format(conn.hostname))
        self.assertEqual(conn.family, "NCS4K", "Wrong Family: {}".format(conn.family))
        self.assertEqual(conn.platform, "NCS4016", "Wrong Platform: {}".format(conn.platform))
        self.assertEqual(conn.os_type, "eXR", "Wrong OS Type: {}".format(conn.os_type))
        self.assertEqual(conn.os_version, "6.0.2.10I", "Wrong Version: {}".format(conn.os_version))
        self.assertEqual(conn.udi['name'], "Rack 0", "Wrong Name: {}".format(conn.udi['name']))
        self.assertEqual(conn.udi['description'], "NCS 4016 shelf assembly - DC Power",
                         "Wrong Description: {}".format(conn.udi['description']))
        self.assertEqual(conn.udi['pid'], "NCS4016-SA-DC", "Wrong PID: {}".format(conn.udi['pid']))
        self.assertEqual(conn.udi['vid'], "V01", "Wrong VID: {}".format(conn.udi['vid']))
        self.assertEqual(conn.udi['sn'], "SAL1931LDUG", "Wrong S/N: {}".format(conn.udi['sn']))
        self.assertEqual(conn.prompt, "RP/0/RP0/CPU0:ios#", "Wrong Prompt: {}".format(conn.prompt))

        conn.disconnect()
Beispiel #30
0
    def run(self, csm, plugin_names=[]):
        self.csm = csm
        self._set_logging(self.csm.host.hostname, csm.log_directory,
                          csm.log_level)

        plugin_names = plugin_names if hasattr(plugin_names,
                                               '__iter__') else [plugin_names]

        device = condoor.Connection(self.csm.host.hostname,
                                    self.csm.host_urls,
                                    log_dir=self.csm.log_directory)

        try:
            self.log("Device Discovery Pending")
            device.discovery()

        except condoor.ConnectionError as e:
            self.csm.post_status(e.message)
            return False

        self.csm.save_data('udi', device.udi)
        self.csm.save_data('device_info', device.device_info)

        try:
            self.log("Device Connection Pending")
            device.connect()
        except condoor.ConnectionError as e:
            self.csm.post_status(e.message)
            return False
        self.log("Device Connected Successfully")

        if plugin_names:
            self.filter = lambda plugin_info: (device.family in plugin_info.platforms) and \
                                              (self.csm.requested_action in plugin_info.phases) and \
                                              (plugin_info.name in plugin_names)
        else:
            self.filter = lambda plugin_info: (device.family in plugin_info.platforms) and \
                                              (self.csm.requested_action in plugin_info.phases)

        nop = self.locate_plugins()
        self.log("Number of plugins: {}".format(nop))

        plugins = self.load_plugins()

        list_of_plugins = ", ".join(plugin.name for plugin in plugins)
        self.log("Plugins to be launched: {}".format(list_of_plugins))

        try:
            for plugin in plugins:
                self.log("Launching {} Plugin".format(plugin.name))
                self.current_plugin = plugin.name
                plugin.plugin_object.start(self, device)
                self.current_plugin = None
                self.log("Finished {} Plugin".format(plugin.name))

        except PluginError as e:
            self.csm.success = False
            self.csm.post_status(e.message)
            return False

        except (condoor.ConnectionError, condoor.CommandError) as e:
            self.csm.success = False
            self.csm.post_status(e.message)
            self.logger.error(e.message)
            return False

        except Exception as e:
            self.logger.error(e.__class__)
            self.logger.error(e.message)
            self.csm.success = False
            self.csm.post_status(e.message)
            return False

        finally:
            device.disconnect()

        self.csm.success = True
        return True