Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# License: GNU General Public License v2
# Author: thl-cmk[at]outlook[dot]com
# URL : https://thl-cmk.hopto.org
# Date : 2023-10-12
# File : create_topology_utils.py
from argparse import (
Namespace as arg_Namespace,
ArgumentParser,
RawTextHelpFormatter,
)
def parse_arguments(create_topology_version: str) -> arg_Namespace:
parser = ArgumentParser(
prog='make-topology.py',
description='This script creates the topology file needed for the Checkmk "network_visualization" plugin by '
'Andreas Boesl and schnetz.\n'
'See https://forum.checkmk.com/t/network-visualization/41680 and '
'https://exchange.checkmk.com/p/network-visualization for more information. \n'
'\n'
'The inventory data could be created with my inventory plugins:\n'
'CDP: https://thl-cmk.hopto.org/gitlab/checkmk/vendor-independent/inventory/inv_cdp_cache\n'
'LLDP: https://thl-cmk.hopto.org/gitlab/checkmk/vendor-independent/inventory/inv_lldp_cache\n'
'\n'
f'\nVersion: {create_topology_version} | Written by: thl-cmk, for more information '
f'see: https://thl-cmk.hopto.org',
formatter_class=RawTextHelpFormatter,
epilog='Usage:\n'
'for CDP (the default):\n'
'./create_topology.py -s "CORE01,CORE01" -m\nor\n'
'./create_topology.py -s "CORE01,CORE01" -m '
'-p "networking,cdp_cache" -c "device_id,local_port,device_port"\n\n'
'for LLDP:\n'
'./create_topology.py -s "CORE01,CORE01" -m '
'-p "networking,lldp_cache" -c "system_name,local_port_num,port_id"\n',
)
parser.add_argument('-s, --seed-devices', type=str,
help='List of devices to start the topology discovery from. I.e. "CORE01, C2960-1-1"')
parser.add_argument('-v', '--version', default=False, action='store_const', const=True,
help='Print version of this script and exit')
parser.add_argument('-p, --path-in-inventory', type=str,
help='Checkmk inventory path to the topology data. I.e. "networking,cdp_cache"')
parser.add_argument('-c, --inventory-columns', type=str,
help='Columns used from the inventory data. I.e. "device_id,local_port,device_port"\n'
'NOTE: the columns must be in the order: neighbour, local_port, neighbour_port')
parser.add_argument('-d, --data-source', type=str,
help='The source where the topology data come from. I.e. "inv_CDP" '
'for CDP data from the inventory. NOTE: right now this only an unused label.')
parser.add_argument('-t, --time-format', type=str,
help='Format string to render the time. (default: %%Y-%%m-%%dT%%H:%%M:%%S.%%m)')
parser.add_argument('-o, --output-directory', type=str,
help='Directory name where to save the topology data. I.e.: my_topology. '
'Default is the actual date/time in "--time-format"'
'\nNOTE: the directory is a sub directory to "~/var/topology_data/"')
parser.add_argument('-m', '--make_default', default=False, action='store_const', const=True,
help='Set the created topology data as default')
return parser.parse_args()