2023-10-10: initial release 2023-10-16: added options --keep-max and --min-age 2023-10-17: removed -p, -c, -d (use the long options instead: --path-in-inventory, --data-source, --inventory-columns) changed option --keep-max to --keep added option --check-user-data-only added SEED_DEVICES to user data, option -s/--sed-devices is now optional refactoring 2023-10-18: fixed --make-default not working added protected topologies changed get inventory data from file access to request via live status query get interfaces from autochecks changed to live status query 2023-10-19: cleanup removed "all" unused functions added option -u, --user-data-file to provide a user specific data file 2023-10-20: changed option -m/--make-default to -d/--default (-m is needed for -m/--merge added -m/--merge option 2023-10-27: improved matching of port name from CDP/LLDP data to interface (item) name of service improved internal data handling (HostCache) 2023-10-28: reworked handling of layers (see option -l/--layers) added option -l/-layers {CDP,CUSTOM,LLDP,STATIC} [{CDP,CUSTOM,LLDP,STATIC} ...] added section CUSTOM_LAYERS to user data file removed option -m/--merge, included in option -l/--layers removed option --lldp, included in option -l/--layers removed option --data-source, now handled in CUSTOM_LAYERS removed option --inventory-columns, now handled in CUSTOM_LAYERS removed option --path-in-inventory, now handled in CUSTOM_LAYERS removed lower limits for --keep and --min-age 2023-11-16: added option -b/--backend [LIVESTATUS, FILESYSTEM], LIVESTATUS is the default for performance reasons -> for now only local site FILESYSTEM fetches the data directly form the inventory files -> use in distributed environments 2023-11-28: implemented MULTISITE as backend, via livestatus -> use in distributed environments, may become the default 2023-11-30: added RESTAPI backend --> this is kind of slow (20 seconds compared to 0.5 for MULTISITE) 2023-12-06: do not add devices from static connections to seed devices --> be more transparent added prefix option -> needs testing (THX to andreas doehler for the suggestion) 2023-12-21: adjusted for streamlined CDP/LLDP inventory format, needs at least CDP 0.7.1-20231221 and LLDP 0.9.2-2023122 changed default backend from LIVESTATUS to MULTISITE added logger (option --log-level) removed option --debug 2023-12-22: added options --log-file and --log-to-stdout 2024-01-02: added new output format (option --new-format) fixed LOGGER.warn --> LOGGER.warning improved detection of missing hosts/interfaces 2024-01-03: fixed query in MULTISITE.exist added option --quiet renamed from create_topology_data to nvdct 2024-01-04: added SETTINGS section to nvdct.toml file -> defaults -> overridden by toml -> overridden by cli only seed devices are additive (toml + cli) added L3v4 toml options: L3V4_IGNORE_HOSTS, L3V4_SUMMARIZE, L3V3_REPLACE moved from ~/local/bin/topology_data to ~/local/bin/nvdct 2024-01-28: fixed -b MULTISITE if not in distributed environment (falling back to local) fixed crash in create_l3v4_topology if no host was found 2024-01-29: added new output path for cmk 2.3 changed don't output cmk 2.2 format if --new-format set 2024-02-25: added images for L3 Topo (IP-Address and IP-Network) icon source includes: https://www.flaticon.com/free-icons added option to drop neighbours by regex fixed no inventory in L3v4 2024-03-14: added metadata for connection (thickness, color) thickness can be configured via toml (MAP_SPEED_TO_THICKNESS) color 'red' is used for speed mismatch made node emblem configurable (for ip-address and ip-network) via toml (EMBLEMS) 2024-03-16: moved args, utils, classes to lib split classes in to backends, settings and classes 2024-03-17: changed speed mismatch from native speed to operational speed added duplex mismatch ('yellow') added native vlan mismatch ('orange') 2024-03-25: added --pre-fetch, this will speed up the RESTAPI backend performance min inv_cdp_cahe version: 0.7.1-20240320 -> host label nvdct/has_cdp_neighbours min inv_lldp_cache version: 0.9.3-20240320 -> host label nvdct/has_lldp_neighbours 2024-03-27: added option --api-port, defaults to 80 2024-03-28: changed restapi get_interface_data to use one call to fetch all data 2024-03-29: added L3V4_IGNORE_IP and L3V4_IRNORE_WILDCARD to toml file 2024-03-31: fixed: L3V3_REPLACE -> L3V4_REPLACE made input from toml more bullet proof 2024-04-03: change HostCacheMultiSite to be child of HostCacheLiveStatus 2024-04-06: added node icon warning 2024-04-07: added css for connection 2024-04-13: added html tooltip for connection issues 2024-04-15: added emblems for l3v4_summary and l3v4_replace 2024-04-16: fixed html tooltip for speed mismatch (Speed: 100 MBit/s (expected: 1 GBit/s)WARN) added option --skip-l3-if 2024-04-17: automatically detect local CMK version -> no need for --new-format option any more automatically detect local CONFIG_APACHE_TCP_PORT -> no need for --api-port option any more 2024-04-18: added option --skip-l3-ip added tooltip for --skip-l3-if and --skip-l3-ip 2024-04-30: automatically create @default if it doesn't exist 2024-05-07: fixed handling of ignore wildcard in L3v4 topology 2024-05-07: fixed handling of ignore wildcard in L3v4 topology 2024-05-17: added support for Extreme interfaces in LLDP without stack id (1 -> 1:1) 2024-05-18: added support for NXOS interfaces in LLDP in short from (Eth1/1 -> Ethernet1/1) added IP-Address/IP-Network as quickinfo 2024-05-18: fixed crash on empty neighbour port (ThX to andreas doehler) 2024-06-17: fixed bad IPv4 address data (just drop it) 2024-06-18: fixed host_exist returns always True if host was in host_cache, even with host=None 2024-09-23: incompatible replaced options --lowercase/--uppercase with --case LOWER|UPPER changed version output from settings to argparse action incompatible removed backend FILESYSTEM -> will fallback to MULTISITE incompatible removed support for CMK2.2.x file format (removed option --new-format) 2024-09-24: added site filter for multisite deployments (MULTISITE only), option --filter-sites and SITES section in toml file added customer filter for MSP deployments (MULTISITE only), option --filter-customers and section CUSTOMERS in toml file 2024-11-16: added better logging for missing L2 data 2024-11-17: added L2_NEIGHBOUR_REPLACE_REGEX (ThX to Frankb@checkmk forum for the base idea) incompatible removed DROP_HOST_REGEX -> use L2_NEIGHBOUR_REPLACE_REGEX instead incompatible changed section names in TOML file to better distinguish between L2 and L3v4 HOST_MAP -> L2_HOST_MAP DROP_HOSTS -> L2_DROP_HOSTS SEED_DEVICES -> L2_SEED_DEVICES incompatible removed option -s, --seed-devices from CLI -> use TOML section L2_SEED_DEVICES instead incompatible changed the option keep-domain to remove-domain -> don't mess with neighbor names by default 2024-12-08: incompatible: changed hostlabel for L3v4 topology to nvdct/l3v4_topology needs at least inv_ip_address inv_ip_address-0.0.5-20241209.mkp 2024-12-09: added option --include-l3-hosts added site filter for RESTAPI backend enabled customer filter for MULTISITE backend 2024-12-10: refactoring: moved topology code to topologies, removed all global variables, created main() function 2024-12-11: incompatible: changed default layers to None -> use the CLI option -l CDP or the configfile instead incompatible: reworked static topology -> can now be used for each service, host/service name has to be exactly like in CMK. See ~/local/bin/nvdct/conf/nfdct.toml moved string constants to lib/constants.py minimum ip address inventory plugin versions - inv_lnx_if_ip-0.0.4-20241210.mkp - inv_ip_address-0.0.6-20241210.mkp - inv_win_if_ip-0.0.3-20241210.mkp 2024-12-17: fixed wrong import for OMD_ROOT (copy&paste) (ThX to BH2005@forum.checkmk.com)