Skip to content

Commit

Permalink
Merge branch 'develop' into evilmonkey19-huawei_smartax_improve_closing
Browse files Browse the repository at this point in the history
ktbyers authored Jan 21, 2025
2 parents 6f13976 + bb699c1 commit 697cb6f
Showing 8 changed files with 142 additions and 4 deletions.
4 changes: 4 additions & 0 deletions PLATFORMS.md
Original file line number Diff line number Diff line change
@@ -99,10 +99,12 @@
- F5 Linux
- Fortinet
- Garderos GRS
- Genexis Saturn SOLT33 (telnet only)
- MRV Communications OptiSwitch
- MRV LX
- Nokia/Alcatel SR-OS
- Nokia SR Linux
- Optilink EOLT 9702 (telnet only)
- QuantaMesh
- Rad ETX
- Raisecom ROAP
@@ -280,6 +282,7 @@
- extreme_telnet
- generic_telnet
- generic_termserver_telnet
- genexis_solt33_telnet
- hp_comware_telnet
- hp_procurve_telnet
- huawei_olt_telnet
@@ -289,6 +292,7 @@
- maipu_telnet
- nokia_sros_telnet
- oneaccess_oneos_telnet
- optilink_eolt9702_telnet
- paloalto_panos_telnet
- rad_etx_telnet
- raisecom_telnet
3 changes: 3 additions & 0 deletions netmiko/genexis/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from netmiko.genexis.genexis_solt33 import GenexisSOLT33Telnet

__all__ = ["GenexisSOLT33Telnet"]
31 changes: 31 additions & 0 deletions netmiko/genexis/genexis_solt33.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from netmiko.cisco_base_connection import CiscoBaseConnection


class GenexisSOLT33Base(CiscoBaseConnection):
def session_preparation(self) -> None:
self._test_channel_read(pattern=r"[>#]")
self.set_base_prompt()
self.enable()
self.config_mode()
cmd = "line width 256"
self.set_terminal_width(command=cmd, pattern=cmd)
self.disable_paging(command="screen-rows per-page 0")
self.clear_buffer()
self.exit_config_mode()
self.exit_enable_mode()

def exit_enable_mode(self, exit_command: str = "exit") -> str:
output = ""
if self.check_enable_mode():
self.write_channel(self.normalize_cmd(exit_command))
self.read_until_pattern(pattern=exit_command)
output += self.read_until_pattern(pattern=r">")
if self.check_enable_mode():
raise ValueError("Failed to exit enable mode.")
return output


class GenexisSOLT33Telnet(GenexisSOLT33Base):
"""Genexis SOLT33 telnet driver"""

pass
7 changes: 7 additions & 0 deletions netmiko/optilink/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from netmiko.optilink.op_eolt9702 import OptilinkEOLT9702Telnet
from netmiko.optilink.op_eolt11444 import OptilinkEOLT11444Telnet

__all__ = [
"OptilinkEOLT11444Telnet",
"OptilinkEOLT9702Telnet",
]
36 changes: 36 additions & 0 deletions netmiko/optilink/op_eolt11444.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from netmiko.cisco_base_connection import CiscoBaseConnection


class OptilinkEOLT11444Base(CiscoBaseConnection):
"""
Optilink EOLT 11444
Optilink EOLT 11448
"""

def session_preparation(self) -> None:
self._test_channel_read(pattern=r"[>#]")
self.set_base_prompt()
self.enable()
self.disable_paging()
self.clear_buffer()
self.exit_enable_mode()

def config_mode(
self,
config_command: str = "configure",
pattern: str = "",
re_flags: int = 0,
) -> str:
"""Enter into configuration mode."""
return super().config_mode(
config_command=config_command, pattern=pattern, re_flags=re_flags
)


class OptilinkEOLT11444Telnet(OptilinkEOLT11444Base):
"""
Optilink EOLT 11444 telnet driver
Optilink EOLT 11448 telnet driver
"""

pass
52 changes: 52 additions & 0 deletions netmiko/optilink/op_eolt9702.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
from netmiko.cisco_base_connection import CiscoBaseConnection


class OptilinkEOLT9702Base(CiscoBaseConnection):
"""
Optilink EOLT 9702-8P2AB
Optilink EOLT 9702-4P
"""

def session_preparation(self) -> None:
self._test_channel_read(pattern=r"[>#]")
self.set_base_prompt()
self.enable()
self.config_mode()
self.send_command("vty output show-all")
self.exit_config_mode()
self.exit_enable_mode()

def config_mode(
self,
config_command: str = "config",
pattern: str = "",
re_flags: int = 0,
) -> str:
"""Enter into configuration mode."""
return super().config_mode(
config_command=config_command, pattern=pattern, re_flags=re_flags
)

def exit_enable_mode(self, exit_command: str = "exit") -> str:
"""Exit from enable mode."""
output = ""
if self.check_enable_mode():
self.write_channel(self.normalize_cmd(exit_command))
self.read_until_pattern(pattern=exit_command)
output += self.read_until_pattern(pattern=r"OP_OLT>")
if self.check_enable_mode():
raise ValueError("Failed to exit enable mode.")
return output

def exit_config_mode(self, exit_config: str = "exit", pattern: str = r"#.*") -> str:
"""Exit from configuration mode."""
return super().exit_config_mode(exit_config=exit_config, pattern=pattern)


class OptilinkEOLT9702Telnet(OptilinkEOLT9702Base):
"""
Optilink EOLT 9702-8P2AB telnet driver
Optilink EOLT 9702-4P telnet driver
"""

pass
4 changes: 2 additions & 2 deletions netmiko/paloalto/paloalto_panos.py
Original file line number Diff line number Diff line change
@@ -78,8 +78,8 @@ def session_preparation(self) -> None:
self.set_base_prompt()

# PA devices can be really slow--try to make sure we are caught up
self.write_channel("show admins\n")
self._test_channel_read(pattern=r"Client")
self.write_channel("show system info\n")
self._test_channel_read(pattern=r"operational-mode")
self._test_channel_read(pattern=r"[>#]")

def find_prompt(
9 changes: 7 additions & 2 deletions netmiko/ssh_dispatcher.py
Original file line number Diff line number Diff line change
@@ -86,6 +86,7 @@
from netmiko.flexvnf import FlexvnfSSH
from netmiko.fortinet import FortinetSSH
from netmiko.garderos import GarderosGrsSSH
from netmiko.genexis import GenexisSOLT33Telnet
from netmiko.hillstone import HillstoneStoneosSSH
from netmiko.hp import HPProcurveSSH, HPProcurveTelnet, HPComwareSSH, HPComwareTelnet
from netmiko.huawei import HuaweiSSH, HuaweiVrpv8SSH, HuaweiTelnet
@@ -111,6 +112,8 @@
)
from netmiko.netgear import NetgearProSafeSSH
from netmiko.oneaccess import OneaccessOneOSTelnet, OneaccessOneOSSSH
from netmiko.optilink import OptilinkEOLT9702Telnet
from netmiko.optilink import OptilinkEOLT11444Telnet
from netmiko.ovs import OvsLinuxSSH
from netmiko.paloalto import PaloAltoPanosSSH
from netmiko.paloalto import PaloAltoPanosTelnet
@@ -143,7 +146,6 @@
from netmiko.supermicro import SmciSwitchSmisTelnet
from netmiko.zyxel import ZyxelSSH


if TYPE_CHECKING:
from netmiko.base_connection import BaseConnection
from netmiko.scp_handler import BaseFileTransfer
@@ -350,14 +352,18 @@
CLASS_MAPPER["extreme_netiron_telnet"] = ExtremeNetironTelnet
CLASS_MAPPER["generic_telnet"] = GenericTelnet
CLASS_MAPPER["generic_termserver_telnet"] = TerminalServerTelnet
CLASS_MAPPER["genexis_solt33_telnet"] = GenexisSOLT33Telnet
CLASS_MAPPER["hp_procurve_telnet"] = HPProcurveTelnet
CLASS_MAPPER["hp_comware_telnet"] = HPComwareTelnet
CLASS_MAPPER["huawei_telnet"] = HuaweiTelnet
CLASS_MAPPER["huawei_olt_telnet"] = HuaweiSmartAXSSH
CLASS_MAPPER["ipinfusion_ocnos_telnet"] = IpInfusionOcNOSTelnet
CLASS_MAPPER["juniper_junos_telnet"] = JuniperTelnet
CLASS_MAPPER["maipu_telnet"] = MaipuTelnet
CLASS_MAPPER["nokia_sros_telnet"] = NokiaSrosTelnet
CLASS_MAPPER["oneaccess_oneos_telnet"] = OneaccessOneOSTelnet
CLASS_MAPPER["optilink_eolt9702_telnet"] = OptilinkEOLT9702Telnet
CLASS_MAPPER["optilink_eolt11444_telnet"] = OptilinkEOLT11444Telnet
CLASS_MAPPER["paloalto_panos_telnet"] = PaloAltoPanosTelnet
CLASS_MAPPER["rad_etx_telnet"] = RadETXTelnet
CLASS_MAPPER["raisecom_telnet"] = RaisecomRoapTelnet
@@ -368,7 +374,6 @@
CLASS_MAPPER["tplink_jetstream_telnet"] = TPLinkJetStreamTelnet
CLASS_MAPPER["yamaha_telnet"] = YamahaTelnet
CLASS_MAPPER["zte_zxros_telnet"] = ZteZxrosTelnet
CLASS_MAPPER["maipu_telnet"] = MaipuTelnet

# Add serial drivers
CLASS_MAPPER["cisco_ios_serial"] = CiscoIosSerial

0 comments on commit 697cb6f

Please sign in to comment.