Skip to content

Commit 7680392

Browse files
committed
Releasing v25.8
1 parent 205d5b5 commit 7680392

File tree

18 files changed

+449
-17
lines changed

18 files changed

+449
-17
lines changed

docs/changelog/2025/august.rst

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
August 2025
2+
==========
3+
4+
September 30 - Unicon v25.8
5+
------------------------
6+
7+
8+
9+
.. csv-table:: Module Versions
10+
:header: "Modules", "Versions"
11+
12+
``unicon.plugins``, v25.8
13+
``unicon``, v25.8
14+
15+
16+
17+
18+
Changelogs
19+
^^^^^^^^^^
20+
--------------------------------------------------------------------------------
21+
Fix
22+
--------------------------------------------------------------------------------
23+
24+
* unicon/bases
25+
* router
26+
* Added a statement to logout dialog to handle the standby console locked
27+
* Added check in designate_handle to skip goto enable when standby is locked
28+
29+
30+
--------------------------------------------------------------------------------
31+
New
32+
--------------------------------------------------------------------------------
33+
34+
* cheetah
35+
* Added cheetah ap tokens in pids csv file
36+
37+
* iosxe/cat9k/9610
38+
* Added the support for stackwise virtual for c9610 devices
39+
* Added SVLStackReload and SVLStackSwitchover services
40+
41+
42+
--------------------------------------------------------------------------------
43+
Fix
44+
--------------------------------------------------------------------------------
45+
46+
* generic/patterns
47+
* Modified syslog_message_pattern to handle additional syslog message formats.
48+
49+

docs/changelog/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Changelog
44
.. toctree::
55
:maxdepth: 2
66

7+
2025/august
78
2025/july
89
2025/june
910
2025/may
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
August 2025
2+
==========
3+
4+
September 30 - Unicon.Plugins v25.8
5+
------------------------
6+
7+
8+
9+
.. csv-table:: Module Versions
10+
:header: "Modules", "Versions"
11+
12+
``unicon.plugins``, v25.8
13+
``unicon``, v25.8
14+
15+
16+
17+
18+
Changelogs
19+
^^^^^^^^^^
20+
--------------------------------------------------------------------------------
21+
New
22+
--------------------------------------------------------------------------------
23+
24+
* iosxe
25+
* Updated prompts patterns to handle c9800 virtual devices.
26+
27+
28+
--------------------------------------------------------------------------------
29+
Fix
30+
--------------------------------------------------------------------------------
31+
32+
* iosxe
33+
* Updated syslog pattern to handle security log message
34+
35+
* generic
36+
* Handle tclsh continuation prompt "+>" on initial connection.
37+
38+

docs/changelog_plugins/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Plugins Changelog
44
.. toctree::
55
:maxdepth: 2
66

7+
2025/august
78
2025/july
89
2025/june
910
2025/may

src/unicon/plugins/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = "25.7"
1+
__version__ = "25.8"
22

33
supported_chassis = [
44
'single_rp',

src/unicon/plugins/generic/patterns.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,16 @@ def __init__(self):
7171
# RP/0/0/CPU0:Oct 9 01:44:47.875
7272
# *May 28 09:01:05.136: yang-infra: Default hostkey created (NETCONF_SSH_RSA_KEY.server)
7373
# *May 28 09:01:11.975: PKI_SSL_IPC: SUDI certificate chain and key pair are invalid
74+
# SECURITY WARNING - Module: SSH, Command: crypto key generate rsa ..., Reason: SSH RSA host key uses insufficient key length, Remediation: Configure SSH RSA host key with minimum key length of 3072 bits
75+
# Switch#[OK]
7476
self.syslog_message_pattern = (
7577
r"^.*?(%\w+(-\S+)?-\d+-\w+|"
7678
r"yang-infra:|PKI_SSL_IPC:|Guestshell destroyed successfully|"
7779
r"%Error opening tftp:\/\/255\.255\.255\.255|Autoinstall trying|"
78-
r"audit: kauditd hold queue overflow|"
79-
r"(LC|RP)/\d+/\d+/CPU\d+:\w+\s+\d+\s+\d{2}:\d{2}:\d{2}).*\s*$"
80+
r"audit: kauditd hold queue overflow|SECURITY WARNING|"
81+
r"(LC|RP)/\d+/\d+/CPU\d+:\w+\s+\d+\s+\d{2}:\d{2}:\d{2}|"
82+
r"\[OK\]"
83+
r").*\s*$"
8084
)
8185
self.config_locked = r'Configuration (mode )?(is )?locked|Config mode cannot be entered'
8286

@@ -99,3 +103,5 @@ def __init__(self):
99103
self.enter_your_encryption_selection_2 = r'^.*?Enter your encryption selection( \[2])?:\s*$'
100104

101105
self.no_password_set = r'^.*% (No password set|Error in authentication.).*'
106+
107+
self.tclsh_continue = r'^\+\>\s?$'

src/unicon/plugins/generic/statements.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ def ssh_tacacs_handler(spawn, context):
366366
def password_handler(spawn, context, session):
367367
""" handles password prompt
368368
"""
369-
if 'enable' in spawn.last_sent:
369+
if spawn.last_sent.startswith('enable'):
370370
return enable_password_handler(spawn, context, session)
371371

372372
credential = get_current_credential(context=context, session=session)
@@ -780,6 +780,13 @@ def __init__(self):
780780
loop_continue=True,
781781
continue_timer=True)
782782

783+
self.tclsh_continue_stmt = Statement(pattern=pat.tclsh_continue,
784+
action="sendline(})",
785+
args=None,
786+
loop_continue=True,
787+
continue_timer=False)
788+
789+
783790
#############################################################
784791
# Statement lists
785792
#############################################################
@@ -827,7 +834,8 @@ def __init__(self):
827834
initial_statement_list = [generic_statements.init_conf_stmt,
828835
generic_statements.mgmt_setup_stmt,
829836
generic_statements.enter_your_selection_stmt,
830-
generic_statements.enter_your_encryption_selection_stmt
837+
generic_statements.enter_your_encryption_selection_stmt,
838+
generic_statements.tclsh_continue_stmt
831839
]
832840

833841

@@ -842,4 +850,3 @@ def __init__(self):
842850
authentication_statement_list + \
843851
initial_statement_list + \
844852
pre_connection_statement_list
845-

src/unicon/plugins/iosxe/cat9k/c9610/__init__.py

Whitespace-only changes.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
""" A Stackwise-virtual C9610 IOS-XE connection implementation.
2+
"""
3+
4+
from unicon.plugins.iosxe.stack import StackIosXEServiceList
5+
from unicon.plugins.iosxe.stack import IosXEStackRPConnection
6+
from unicon.plugins.iosxe.cat9k.stackwise_virtual.connection_provider import StackwiseVirtualConnectionProvider
7+
8+
from unicon.plugins.iosxe.cat9k.c9500x.stackwise_virtual.service_implementation import SVLStackReload, SVLStackSwitchover
9+
10+
11+
class IosXEC9610StackwiseVirtualServiceList(StackIosXEServiceList):
12+
13+
def __init__(self):
14+
super().__init__()
15+
self.reload = SVLStackReload
16+
self.switchover = SVLStackSwitchover
17+
18+
19+
class IosXEC9610StackwiseVirtualRPConnection(IosXEStackRPConnection):
20+
os = 'iosxe'
21+
platform = 'cat9k'
22+
model = 'c9610'
23+
submodel = 'c9610'
24+
chassis_type = 'stackwise_virtual'
25+
connection_provider_class = StackwiseVirtualConnectionProvider
26+
subcommand_list = IosXEC9610StackwiseVirtualServiceList

src/unicon/plugins/iosxe/connection_provider.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ def __init__(self, *args, **kwargs):
2121
"""
2222
super().__init__(*args, **kwargs)
2323

24-
2524
def learn_tokens(self):
2625
con = self.connection
2726
if (not con.learn_tokens or not con.settings.LEARN_DEVICE_TOKENS)\
@@ -32,7 +31,8 @@ def learn_tokens(self):
3231
con.spawn,
3332
context=con.context,
3433
prompt_recovery=con.prompt_recovery)
35-
if con.state_machine.current_state in ['acm', 'config','rules']:
34+
35+
if con.state_machine.current_state in ['acm', 'config', 'rules', 'tclsh']:
3636
con.state_machine.go_to('enable',
3737
con.spawn,
3838
context=con.context,

0 commit comments

Comments
 (0)