Skip to content

Commit 933ac99

Browse files
authored
Merge pull request #964 from jlmcgraw/2025-10-24_ios_xe_show_ntp
Handle NTP servers configured to use a key
2 parents f88eece + bbfabbd commit 933ac99

File tree

4 files changed

+93
-1
lines changed

4 files changed

+93
-1
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
----------------------
2+
Fix
3+
----------------------
4+
* iosxe
5+
* Modified ShowNtpConfig
6+
* Modified regex pattern to support ntp servers configured with keys
7+
* Changed schema to include "key_id"

src/genie/libs/parser/iosxe/show_ntp.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ class ShowNtpConfigSchema(MetaParser):
341341
'vrf': str,
342342
Optional('source'): str,
343343
Optional('preferred'): bool,
344+
Optional('key_id'): str,
344345
}
345346
},
346347
'isconfigured': {
@@ -376,9 +377,11 @@ def cli(self, output=None):
376377
# ntp server vrf VRF1 10.64.4.4
377378
# ntp server 10.16.2.2 source Loopback0
378379
# ntp server 10.3.254.100 prefer
380+
# ntp server vrf Mgmt 10.2.2.2 key 2
381+
# ntp server vrf Mgmt 10.3.3.3 key 3 prefer
379382
p1 = re.compile(r"^ntp +(?P<type>\w+)( +vrf +(?P<vrf>\S+))? "
380383
r"+(?P<address>[\w\.\:]+)( +source +"
381-
r"(?P<source_interface>[\w]+))?(?P<prefer> prefer)?$")
384+
r"(?P<source_interface>[\w]+))?( +key +(?P<key_id>\S+))?(?P<prefer> prefer)?$")
382385

383386
for line in out.splitlines():
384387
line = line.strip()
@@ -393,6 +396,7 @@ def cli(self, output=None):
393396
address = groups['address']
394397
source = groups['source_interface'] or ''
395398
prefer = groups['prefer']
399+
key_id = groups['key_id']
396400
isconfigured = True
397401

398402
addr_dict = ret_dict.setdefault('vrf', {}).setdefault(vrf, {})\
@@ -408,6 +412,9 @@ def cli(self, output=None):
408412
if source:
409413
addr_dict['type'][ntp_type]['source'] = source
410414

415+
if key_id:
416+
addr_dict['type'][ntp_type]['key_id'] = key_id
417+
411418
addr_dict.setdefault('isconfigured', {}).\
412419
setdefault(str(isconfigured), {}).update({'address': address,
413420
'isconfigured': isconfigured})
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
expected_output = {
2+
'vrf': {
3+
'Mgmt': {
4+
'address': {
5+
'10.1.1.1': {
6+
'type': {
7+
'server': {
8+
'address': '10.1.1.1',
9+
'type': 'server',
10+
'vrf': 'Mgmt',
11+
'key_id': '2'
12+
}
13+
},
14+
'isconfigured': {
15+
'True': {
16+
'address': '10.1.1.1',
17+
'isconfigured': True
18+
}
19+
}
20+
},
21+
'10.2.2.2': {
22+
'type': {
23+
'server': {
24+
'address': '10.2.2.2',
25+
'type': 'server',
26+
'vrf': 'Mgmt',
27+
'key_id': '3'
28+
}
29+
},
30+
'isconfigured': {
31+
'True': {
32+
'address': '10.2.2.2',
33+
'isconfigured': True
34+
}
35+
}
36+
},
37+
'10.3.3.3': {
38+
'type': {
39+
'server': {
40+
'address': '10.3.3.3',
41+
'type': 'server',
42+
'vrf': 'Mgmt',
43+
'key_id': '4'
44+
}
45+
},
46+
'isconfigured': {
47+
'True': {
48+
'address': '10.3.3.3',
49+
'isconfigured': True
50+
}
51+
}
52+
},
53+
'10.4.4.4': {
54+
'type': {
55+
'server': {
56+
'address': '10.4.4.4',
57+
'type': 'server',
58+
'vrf': 'Mgmt',
59+
'preferred': True,
60+
'key_id': '5'
61+
}
62+
},
63+
'isconfigured': {
64+
'True': {
65+
'address': '10.4.4.4',
66+
'isconfigured': True
67+
}
68+
}
69+
}
70+
}
71+
}
72+
}
73+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
R1#show ntp config
2+
ntp server vrf Mgmt 10.1.1.1 key 2
3+
ntp server vrf Mgmt 10.2.2.2 key 3
4+
ntp server vrf Mgmt 10.3.3.3 key 4
5+
ntp server vrf Mgmt 10.4.4.4 key 5 prefer

0 commit comments

Comments
 (0)