diff --git a/netbox_zabbix_sync/modules/core.py b/netbox_zabbix_sync/modules/core.py index 642f16d..b48c5dc 100644 --- a/netbox_zabbix_sync/modules/core.py +++ b/netbox_zabbix_sync/modules/core.py @@ -145,21 +145,32 @@ class Sync: support_token_url = ( "https://netboxlabs.com/docs/netbox/integrations/rest-api/#v1-and-v2-tokens" # noqa: S105 ) + token_prefix = "nbt_" # noqa: S105 + nb_v2_support_version = "4.5" + v2_token = bool(token.startswith(token_prefix) and "." in token) + v2_error_token = bool(token.startswith(token_prefix) and "." not in token) + # Check if the token is passed without a proper key.token format + if v2_error_token: + logger.error( + "It looks like an invalid v2 token was passed. For more info, see %s", + support_token_url, + ) + return False # Warning message for Netbox token v1 with Netbox v4.5 and higher - if not str(token).startswith("nbt_") and nb_version >= "4.5": + if not v2_token and nb_version >= nb_v2_support_version: logger.warning( "Using Netbox v1 token format. " "Consider updating to a v2 token. For more info, see %s", support_token_url, ) - elif nb_version < "4.5" and str(token).startswith("nbt_"): + elif v2_token and nb_version < nb_v2_support_version: logger.error( "Using Netbox v2 token format with Netbox version lower than 4.5. " "Revert to v1 token or upgrade Netbox to 4.5 or higher. For more info, see %s", support_token_url, ) return False - elif nb_version >= "4.5" and str(token).startswith("nbt_"): + elif v2_token and nb_version >= nb_v2_support_version: logger.debug("Using NetBox v2 token format.") else: logger.debug("Using NetBox v1 token format.") @@ -217,11 +228,15 @@ class Sync: netbox_site_groups = convert_recordset(self.netbox.dcim.site_groups.all()) netbox_regions = convert_recordset(self.netbox.dcim.regions.all()) netbox_journals = self.netbox.extras.journal_entries - zabbix_groups = self.zabbix.hostgroup.get(output=["groupid", "name"]) # type: ignore + zabbix_groups = self.zabbix.hostgroup.get( # type: ignore + output=["groupid", "name"] + ) zabbix_templates = self.zabbix.template.get( # type: ignore output=["templateid", "name"] ) - zabbix_proxies = self.zabbix.proxy.get(output=["proxyid", proxy_name]) # type: ignore + zabbix_proxies = self.zabbix.proxy.get( # type: ignore + output=["proxyid", proxy_name] + ) # Set empty list for proxy processing Zabbix <= 6 zabbix_proxygroups = [] if str(self.zabbix.version).startswith("7"): diff --git a/tests/test_core.py b/tests/test_core.py index d21a7a2..d8dc573 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -217,7 +217,7 @@ class TestNetboxTokenHandling(unittest.TestCase): syncer = Sync() with self.assertLogs("NetBox-Zabbix-sync", level="ERROR") as log_context: - result = syncer._validate_netbox_token("nbt_token123", "3.5") + result = syncer._validate_netbox_token("nbt_key123.token123", "3.5") self.assertFalse(result) self.assertTrue( @@ -232,7 +232,7 @@ class TestNetboxTokenHandling(unittest.TestCase): syncer = Sync() with self.assertLogs("NetBox-Zabbix-sync", level="DEBUG") as log_context: - result = syncer._validate_netbox_token("nbt_token123", "4.5") + result = syncer._validate_netbox_token("nbt_key123.token123", "4.5") self.assertTrue(result) self.assertTrue(