Skip to content

Commit

Permalink
nsd-control parser update, zone transfer status (#607)
Browse files Browse the repository at this point in the history
* add more parsing functionality for transfering state

* add additional/conditional fields into the schema

---------

Co-authored-by: Kelly Brazil <[email protected]>
  • Loading branch information
pettai and kellyjonbrazil authored Nov 19, 2024
1 parent 2278c7e commit a8b231d
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 3 deletions.
22 changes: 20 additions & 2 deletions jc/parsers/nsd_control.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,13 @@
"zone": string
"status": {
"state": string,
"pattern": string, # Additional
"catalog-member-id": string, # Additional
"served-serial": string,
"commit-serial": string,
"wait": string
"notified-serial": string, # Conditional
"wait": string,
"transfer": string # Conditional
}
}
]
Expand Down Expand Up @@ -89,7 +93,7 @@ def _process(proc_data):
List of Dictionaries. Structured to conform to the schema.
"""
int_list = {'verbosity', 'ratelimit', 'wait'}
int_list = {'verbosity', 'ratelimit', 'wait', 'transfer'}

for entry in proc_data:
for key in entry:
Expand Down Expand Up @@ -229,6 +233,20 @@ def parse(data: str, raw: bool = False, quiet: bool = False):
raw_output.append(zonename)
continue

if line.startswith('notified-serial:'):
linedata = line.split(': ', maxsplit=1)
notified = linedata[1].strip('"').rstrip('"')
zstatus.update({'notified-serial': notified})
continue

if line.startswith('transfer:'):
linedata = line.split(': ', maxsplit=1)
transfer = linedata[1].strip('"').rstrip('"')
zstatus.update({'transfer': transfer})
zonename.update({'status': zstatus})
raw_output.append(zonename)
continue

# stats
if line.startswith('server') or line.startswith('num.') or line.startswith('size.') or line.startswith('time.') or line.startswith('zone.'):
itrparse = True
Expand Down
2 changes: 1 addition & 1 deletion tests/fixtures/generic/nsd_control-zonestatus.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"zone":"sunet.se","status":{"state":"ok","served-serial":"2023091302 since 2023-09-14T00:50:11","commit-serial":"2023091302 since 2023-09-14T07:04:05","wait":"27023 sec between attempts"}},{"zone":"catz.sunet.se","status":{"pattern":"example.catalog","catalog-member-id":"4b6f6ce2de5929e4.zones.example.catalog.","state":"ok","served-serial":"1705484863 since 2024-01-17T13:06:02","commit-serial":"1705484863 since 2024-01-17T13:06:02","wait":"21341 sec between attempts"}}]
[{"zone":"sunet.se","status":{"state":"ok","served-serial":"2023091302 since 2023-09-14T00:50:11","commit-serial":"2023091302 since 2023-09-14T07:04:05","wait":"27023 sec between attempts"}},{"zone":"sunet.dev","status":{"state":"refreshing","served-serial":"2023095893 since 2024-10-10T10:10:35","commit-serial":"2023095893 since 2024-10-18T10:00:45","notified-serial":"2023095880 since 2024-10-19T06:11:35","transfer":"TCP connected to 192.168.1.100"}},{"zone":"catz.sunet.se","status":{"pattern":"example.catalog","catalog-member-id":"4b6f6ce2de5929e4.zones.example.catalog.","state":"ok","served-serial":"1705484863 since 2024-01-17T13:06:02","commit-serial":"1705484863 since 2024-01-17T13:06:02","wait":"21341 sec between attempts"}}]
6 changes: 6 additions & 0 deletions tests/fixtures/generic/nsd_control-zonestatus.out
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@ zone: sunet.se
served-serial: "2023091302 since 2023-09-14T00:50:11"
commit-serial: "2023091302 since 2023-09-14T07:04:05"
wait: "27023 sec between attempts"
zone: sunet.dev
state: refreshing
served-serial: "2023095893 since 2024-10-10T10:10:35"
commit-serial: "2023095893 since 2024-10-18T10:00:45"
notified-serial: "2023095880 since 2024-10-19T06:11:35"
transfer: "TCP connected to 192.168.1.100"
zone: catz.sunet.se
pattern: example.catalog
catalog-member-id: 4b6f6ce2de5929e4.zones.example.catalog.
Expand Down

0 comments on commit a8b231d

Please sign in to comment.