netbox-nso-plugin 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- netbox_nso_plugin/__init__.py +61 -0
- netbox_nso_plugin/adapter_client.py +1097 -0
- netbox_nso_plugin/api/__init__.py +2 -0
- netbox_nso_plugin/api/serializers.py +433 -0
- netbox_nso_plugin/api/urls.py +25 -0
- netbox_nso_plugin/api/views.py +290 -0
- netbox_nso_plugin/bfd_reconciler.py +197 -0
- netbox_nso_plugin/bgp_reconciler.py +768 -0
- netbox_nso_plugin/derived_intent.py +301 -0
- netbox_nso_plugin/families.py +76 -0
- netbox_nso_plugin/filters.py +91 -0
- netbox_nso_plugin/forms.py +696 -0
- netbox_nso_plugin/intent_drift.py +430 -0
- netbox_nso_plugin/intent_generation.py +33 -0
- netbox_nso_plugin/interface_mtu_reconciler.py +77 -0
- netbox_nso_plugin/ip_autoassign.py +837 -0
- netbox_nso_plugin/isis_write_policy.py +89 -0
- netbox_nso_plugin/jobs.py +106 -0
- netbox_nso_plugin/l2_service_reconciler.py +145 -0
- netbox_nso_plugin/lacp_reconciler.py +124 -0
- netbox_nso_plugin/link_role.py +398 -0
- netbox_nso_plugin/management/__init__.py +2 -0
- netbox_nso_plugin/management/commands/__init__.py +2 -0
- netbox_nso_plugin/management/commands/nso_consume_static_route_settlements.py +82 -0
- netbox_nso_plugin/management/commands/nso_resync_static_route_intent.py +53 -0
- netbox_nso_plugin/merge_util.py +46 -0
- netbox_nso_plugin/migrations/0001_initial.py +1613 -0
- netbox_nso_plugin/migrations/0002_nsodevicemanagement_degraded_surfaces.py +17 -0
- netbox_nso_plugin/migrations/0003_nsodevicemanagement_adapter_link_error.py +17 -0
- netbox_nso_plugin/migrations/0004_nsosnmpcommunitystate_vault_secret_hash_and_more.py +72 -0
- netbox_nso_plugin/migrations/0005_nsoroutepolicystate_unsupported_members.py +17 -0
- netbox_nso_plugin/migrations/0006_nsoisisinterfacestate_bfd_enabled.py +17 -0
- netbox_nso_plugin/migrations/0007_isis_frr_fields.py +32 -0
- netbox_nso_plugin/migrations/0008_snmp_host_v3_username.py +17 -0
- netbox_nso_plugin/migrations/0009_nsoderivedintenttemplate.py +59 -0
- netbox_nso_plugin/migrations/0010_nsofailoversettings_active_probe_timeout.py +31 -0
- netbox_nso_plugin/migrations/0011_nsolacpbundlestate_vpc_sensitive.py +17 -0
- netbox_nso_plugin/migrations/0012_nsologginglevelstate.py +52 -0
- netbox_nso_plugin/migrations/0013_nsologginglevelstate_last_apply_at_and_more.py +22 -0
- netbox_nso_plugin/migrations/0014_nsodevicemanagement_adapter_incarnation_and_more.py +86 -0
- netbox_nso_plugin/migrations/0015_readsem_1332_atomic_publication.py +89 -0
- netbox_nso_plugin/migrations/0016_static_route_intent_generation.py +72 -0
- netbox_nso_plugin/migrations/0017_settlement_cursor_epoch.py +55 -0
- netbox_nso_plugin/migrations/__init__.py +2 -0
- netbox_nso_plugin/models.py +2720 -0
- netbox_nso_plugin/navigation.py +38 -0
- netbox_nso_plugin/onboarding.py +494 -0
- netbox_nso_plugin/read_gate.py +1040 -0
- netbox_nso_plugin/reconcile.py +1601 -0
- netbox_nso_plugin/redistribution_reconciler.py +268 -0
- netbox_nso_plugin/route_policy_diff.py +612 -0
- netbox_nso_plugin/route_policy_reconciler.py +1221 -0
- netbox_nso_plugin/route_policy_structure.py +492 -0
- netbox_nso_plugin/settlement.py +473 -0
- netbox_nso_plugin/shared_object_ownership.py +273 -0
- netbox_nso_plugin/signals.py +4751 -0
- netbox_nso_plugin/snmp_versions.py +23 -0
- netbox_nso_plugin/static/netbox_nso_plugin/nso-badges.js +75 -0
- netbox_nso_plugin/static/netbox_nso_plugin/nso-grid-bfd.js +124 -0
- netbox_nso_plugin/static/netbox_nso_plugin/nso-grid-bgp.js +230 -0
- netbox_nso_plugin/static/netbox_nso_plugin/nso-grid-interface.js +428 -0
- netbox_nso_plugin/static/netbox_nso_plugin/nso-grid-isis.js +293 -0
- netbox_nso_plugin/static/netbox_nso_plugin/nso-grid-lacp.js +176 -0
- netbox_nso_plugin/static/netbox_nso_plugin/nso-grid-ospf.js +198 -0
- netbox_nso_plugin/static/netbox_nso_plugin/nso-grid-redistribution.js +134 -0
- netbox_nso_plugin/static/netbox_nso_plugin/nso-grid-route-policy.js +131 -0
- netbox_nso_plugin/static/netbox_nso_plugin/nso-grid-static.js +145 -0
- netbox_nso_plugin/static/netbox_nso_plugin/nso-grid.js +457 -0
- netbox_nso_plugin/static/netbox_nso_plugin/nso-popedit.js +240 -0
- netbox_nso_plugin/static/netbox_nso_plugin/nso.css +127 -0
- netbox_nso_plugin/static/netbox_nso_plugin/vendor/diff2html.min.css +1 -0
- netbox_nso_plugin/static/netbox_nso_plugin/vendor/diff2html.min.css.license +2 -0
- netbox_nso_plugin/static/netbox_nso_plugin/vendor/diff2html.min.js +1 -0
- netbox_nso_plugin/static/netbox_nso_plugin/vendor/diff2html.min.js.license +2 -0
- netbox_nso_plugin/static/netbox_nso_plugin/vendor/tabulator.min.js +3 -0
- netbox_nso_plugin/static/netbox_nso_plugin/vendor/tabulator.min.js.license +2 -0
- netbox_nso_plugin/static/netbox_nso_plugin/vendor/tabulator_bootstrap5.min.css +2 -0
- netbox_nso_plugin/static/netbox_nso_plugin/vendor/tabulator_bootstrap5.min.css.license +2 -0
- netbox_nso_plugin/status_machine.py +459 -0
- netbox_nso_plugin/subinterface_reconciler.py +88 -0
- netbox_nso_plugin/summary.py +525 -0
- netbox_nso_plugin/svi_reconciler.py +72 -0
- netbox_nso_plugin/sync_cache.py +284 -0
- netbox_nso_plugin/tables.py +201 -0
- netbox_nso_plugin/template_content.py +2828 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/adapterconnection.html +70 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/attach_route_policy.html +96 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/attach_vlan.html +41 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/bgp_peer_form.html +35 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/_accept_cell.html +6 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/_adapter_error.html +4 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/_bulk_accept.html +5 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/_cat_pager.html +11 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/_cat_search.html +20 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/_diff_value_cell.html +7 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/_edit_link.html +5 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/_grid.html +23 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/_interfaces_rows.html +117 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/_push_error.html +16 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/_route_map_version_detail.html +41 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/_state_badge.html +16 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/_table_filter.html +77 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/bfd.html +20 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/bgp.html +30 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/interface.html +69 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/interface_ips.html +40 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/interface_mtu.html +45 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/interfaces_page.html +152 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/isis.html +46 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/l2_services.html +51 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/lacp.html +16 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/logging.html +109 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/ospf.html +35 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/redistribution.html +19 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/route_policy.html +34 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/snmp.html +203 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/static.html +20 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/subinterface.html +50 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/svi.html +50 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/switchport.html +32 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/categories/vlan.html +56 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/device_nso_tab.html +1154 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/inc/_links_tabs.html +23 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/inc/_settings_tabs.html +35 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/inc/diff2html_viewer.html +68 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/inc/route_policy_diff_content.html +42 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/interface_nso_badge.html +73 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/isis_write_policy.html +28 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/links_bulk_delete.html +8 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/links_object_delete.html +7 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/links_object_edit.html +8 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/links_object_list.html +10 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/nsoderivedintenttemplate.html +33 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/nsodevicemanagement.html +106 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/nsodevicemanagement_bulk_delete.html +10 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/nsodevicemanagement_delete.html +9 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/nsodevicemanagement_edit.html +203 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/nsoinstance.html +47 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/nsointerfacestate.html +90 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/nsolinkrole.html +155 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/nsolinkroleassignment.html +46 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/nsoplatformnedmapping.html +39 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/onboarding_dashboard.html +225 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/redistribution_diff.html +49 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/rescope_vlan.html +42 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/route_policy_capabilities.html +122 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/route_policy_classify_bulk.html +68 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/route_policy_diff.html +36 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/route_policy_diff_modal.html +17 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/route_policy_nso_devices.html +88 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/settings_bulk_delete.html +8 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/settings_object_delete.html +7 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/settings_object_edit.html +10 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/settings_object_list.html +10 -0
- netbox_nso_plugin/templates/netbox_nso_plugin/shared_object_versions.html +154 -0
- netbox_nso_plugin/tests/__init__.py +2 -0
- netbox_nso_plugin/tests/_adapter_http.py +65 -0
- netbox_nso_plugin/tests/_settlement_adapter.py +318 -0
- netbox_nso_plugin/tests/_settlement_case.py +239 -0
- netbox_nso_plugin/tests/conftest.py +163 -0
- netbox_nso_plugin/tests/mixins.py +54 -0
- netbox_nso_plugin/tests/mock_discipline.py +303 -0
- netbox_nso_plugin/tests/test_adapter_client_ext.py +626 -0
- netbox_nso_plugin/tests/test_adapter_timestamp_contract.py +228 -0
- netbox_nso_plugin/tests/test_apply_backstop.py +232 -0
- netbox_nso_plugin/tests/test_bfd_reconciler.py +377 -0
- netbox_nso_plugin/tests/test_bgp_greenfield.py +409 -0
- netbox_nso_plugin/tests/test_bgp_reconciler.py +1089 -0
- netbox_nso_plugin/tests/test_contract_bgp.py +185 -0
- netbox_nso_plugin/tests/test_contract_interface_ips.py +67 -0
- netbox_nso_plugin/tests/test_contract_interfaces.py +257 -0
- netbox_nso_plugin/tests/test_contract_isis.py +264 -0
- netbox_nso_plugin/tests/test_contract_l2_read.py +111 -0
- netbox_nso_plugin/tests/test_contract_l2_services.py +64 -0
- netbox_nso_plugin/tests/test_contract_lag.py +83 -0
- netbox_nso_plugin/tests/test_contract_ospf.py +99 -0
- netbox_nso_plugin/tests/test_contract_redistribution.py +80 -0
- netbox_nso_plugin/tests/test_contract_route_policy.py +132 -0
- netbox_nso_plugin/tests/test_contract_snmp_logging.py +188 -0
- netbox_nso_plugin/tests/test_contract_static_routes.py +76 -0
- netbox_nso_plugin/tests/test_derived_intent_compute.py +263 -0
- netbox_nso_plugin/tests/test_derived_intent_config.py +120 -0
- netbox_nso_plugin/tests/test_derived_intent_registry.py +96 -0
- netbox_nso_plugin/tests/test_derived_intent_signals.py +296 -0
- netbox_nso_plugin/tests/test_django_api.py +260 -0
- netbox_nso_plugin/tests/test_django_filters.py +130 -0
- netbox_nso_plugin/tests/test_django_models.py +263 -0
- netbox_nso_plugin/tests/test_django_template.py +382 -0
- netbox_nso_plugin/tests/test_django_views.py +5614 -0
- netbox_nso_plugin/tests/test_forms.py +104 -0
- netbox_nso_plugin/tests/test_gated_reconcile.py +415 -0
- netbox_nso_plugin/tests/test_greenfield_subif.py +47 -0
- netbox_nso_plugin/tests/test_intent_drift.py +247 -0
- netbox_nso_plugin/tests/test_intent_generation_schema.py +201 -0
- netbox_nso_plugin/tests/test_interface_ip.py +766 -0
- netbox_nso_plugin/tests/test_interface_mtu_reconciler.py +259 -0
- netbox_nso_plugin/tests/test_ip_autoassign.py +1091 -0
- netbox_nso_plugin/tests/test_isis_flex_algo_signals.py +117 -0
- netbox_nso_plugin/tests/test_isis_intent_push.py +88 -0
- netbox_nso_plugin/tests/test_isis_interfaces.py +1877 -0
- netbox_nso_plugin/tests/test_isis_write_policy.py +180 -0
- netbox_nso_plugin/tests/test_l2_sap_signals.py +170 -0
- netbox_nso_plugin/tests/test_l2_sap_state_model.py +54 -0
- netbox_nso_plugin/tests/test_l2_service_reconciler.py +180 -0
- netbox_nso_plugin/tests/test_l2_services_category.py +221 -0
- netbox_nso_plugin/tests/test_lacp_reconciler.py +169 -0
- netbox_nso_plugin/tests/test_lacp_signals.py +214 -0
- netbox_nso_plugin/tests/test_lag_topology.py +217 -0
- netbox_nso_plugin/tests/test_lifecycle_ownership.py +127 -0
- netbox_nso_plugin/tests/test_link_role_description.py +152 -0
- netbox_nso_plugin/tests/test_link_role_igp.py +170 -0
- netbox_nso_plugin/tests/test_link_role_ip.py +270 -0
- netbox_nso_plugin/tests/test_link_role_models.py +320 -0
- netbox_nso_plugin/tests/test_link_role_provision.py +322 -0
- netbox_nso_plugin/tests/test_link_role_resolver.py +201 -0
- netbox_nso_plugin/tests/test_logging_config.py +435 -0
- netbox_nso_plugin/tests/test_logging_levels.py +503 -0
- netbox_nso_plugin/tests/test_migrations.py +41 -0
- netbox_nso_plugin/tests/test_mock_discipline.py +178 -0
- netbox_nso_plugin/tests/test_models.py +349 -0
- netbox_nso_plugin/tests/test_ned_mapping.py +57 -0
- netbox_nso_plugin/tests/test_onboard_selfheal.py +213 -0
- netbox_nso_plugin/tests/test_onboarding.py +522 -0
- netbox_nso_plugin/tests/test_ospf_reconciler.py +373 -0
- netbox_nso_plugin/tests/test_overlay_urls.py +85 -0
- netbox_nso_plugin/tests/test_parallel_test_setup.py +25 -0
- netbox_nso_plugin/tests/test_read_chips.py +380 -0
- netbox_nso_plugin/tests/test_read_gate.py +1616 -0
- netbox_nso_plugin/tests/test_read_state_client.py +229 -0
- netbox_nso_plugin/tests/test_reconcile.py +1023 -0
- netbox_nso_plugin/tests/test_reconcile_clobber.py +206 -0
- netbox_nso_plugin/tests/test_redistribution_reconciler.py +453 -0
- netbox_nso_plugin/tests/test_removal_blocked_surfacing.py +501 -0
- netbox_nso_plugin/tests/test_route_policy_capability.py +644 -0
- netbox_nso_plugin/tests/test_route_policy_diff.py +735 -0
- netbox_nso_plugin/tests/test_route_policy_greenfield.py +759 -0
- netbox_nso_plugin/tests/test_route_policy_panel_journal.py +270 -0
- netbox_nso_plugin/tests/test_route_policy_reconciler.py +1864 -0
- netbox_nso_plugin/tests/test_route_policy_structure.py +380 -0
- netbox_nso_plugin/tests/test_serializers.py +118 -0
- netbox_nso_plugin/tests/test_settlement_carrier.py +268 -0
- netbox_nso_plugin/tests/test_settlement_consumer.py +401 -0
- netbox_nso_plugin/tests/test_settlement_cursor.py +598 -0
- netbox_nso_plugin/tests/test_settlement_e2e.py +323 -0
- netbox_nso_plugin/tests/test_settlement_retry_clock.py +338 -0
- netbox_nso_plugin/tests/test_signals.py +1775 -0
- netbox_nso_plugin/tests/test_snmp_accept.py +264 -0
- netbox_nso_plugin/tests/test_snmp_config.py +696 -0
- netbox_nso_plugin/tests/test_snmp_secret_actions.py +442 -0
- netbox_nso_plugin/tests/test_snmp_v3_host.py +158 -0
- netbox_nso_plugin/tests/test_spike_cable_api.py +276 -0
- netbox_nso_plugin/tests/test_static_route_fleet_resync.py +458 -0
- netbox_nso_plugin/tests/test_static_route_push_errors.py +609 -0
- netbox_nso_plugin/tests/test_static_route_refusals.py +111 -0
- netbox_nso_plugin/tests/test_static_route_signals.py +622 -0
- netbox_nso_plugin/tests/test_static_route_transition.py +710 -0
- netbox_nso_plugin/tests/test_static_routes.py +679 -0
- netbox_nso_plugin/tests/test_status_machine.py +381 -0
- netbox_nso_plugin/tests/test_subinterface_reconciler.py +359 -0
- netbox_nso_plugin/tests/test_summary.py +323 -0
- netbox_nso_plugin/tests/test_svi_reconciler.py +230 -0
- netbox_nso_plugin/tests/test_switchport_signals.py +115 -0
- netbox_nso_plugin/tests/test_sync_cache.py +816 -0
- netbox_nso_plugin/tests/test_template_comments.py +61 -0
- netbox_nso_plugin/tests/test_urls.py +173 -0
- netbox_nso_plugin/tests/test_vault_refs.py +60 -0
- netbox_nso_plugin/tests/test_view_permissions.py +189 -0
- netbox_nso_plugin/tests/test_vlan_greenfield.py +93 -0
- netbox_nso_plugin/tests/test_vlan_reconciler.py +506 -0
- netbox_nso_plugin/urls.py +611 -0
- netbox_nso_plugin/vault_refs.py +103 -0
- netbox_nso_plugin/views.py +6185 -0
- netbox_nso_plugin/vlan_reconciler.py +334 -0
- netbox_nso_plugin-0.2.0.dist-info/METADATA +86 -0
- netbox_nso_plugin-0.2.0.dist-info/RECORD +278 -0
- netbox_nso_plugin-0.2.0.dist-info/WHEEL +5 -0
- netbox_nso_plugin-0.2.0.dist-info/licenses/LICENSE +201 -0
- netbox_nso_plugin-0.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright (C) 2025 Marcin Zieba <marcinpsk@gmail.com>
|
|
3
|
+
from netbox.plugins import PluginConfig
|
|
4
|
+
|
|
5
|
+
__version__ = "0.2.0"
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class NSOPluginConfig(PluginConfig):
|
|
9
|
+
"""NetBox plugin configuration for NSO integration."""
|
|
10
|
+
|
|
11
|
+
name = "netbox_nso_plugin"
|
|
12
|
+
verbose_name = "NSO Plugin"
|
|
13
|
+
description = "Integrates NetBox with Cisco NSO via the nso-adapter REST API."
|
|
14
|
+
version = __version__
|
|
15
|
+
base_url = "nso"
|
|
16
|
+
min_version = "4.6.0"
|
|
17
|
+
required_settings = []
|
|
18
|
+
default_settings = {
|
|
19
|
+
"adapter_url": "",
|
|
20
|
+
"adapter_token": "",
|
|
21
|
+
# A 'deploying' row that outlives a SUCCEEDED apply by this long without the
|
|
22
|
+
# device ever showing its value escalates to apply_failed (silent drop, #26).
|
|
23
|
+
"stuck_deploying_grace_minutes": 10,
|
|
24
|
+
}
|
|
25
|
+
author = "Marcin Zieba"
|
|
26
|
+
author_email = "marcinpsk@gmail.com"
|
|
27
|
+
|
|
28
|
+
def ready(self): # pragma: no cover
|
|
29
|
+
"""Connect signal handlers after all apps are loaded."""
|
|
30
|
+
super().ready()
|
|
31
|
+
from . import (
|
|
32
|
+
jobs, # noqa: F401 — registers the @system_job hourly onboarding sweep
|
|
33
|
+
signals, # noqa: F401
|
|
34
|
+
)
|
|
35
|
+
from .signals import _connect_g_activated
|
|
36
|
+
|
|
37
|
+
_connect_g_activated()
|
|
38
|
+
|
|
39
|
+
# Register the shared-object materialization specs (route-policy families) at startup.
|
|
40
|
+
# They live in route_policy_reconciler (run via its module-level _register_specs()), but
|
|
41
|
+
# that module was previously imported only lazily during a reconcile — so a web worker
|
|
42
|
+
# rendering the versions page before any reconcile had an EMPTY registry, making
|
|
43
|
+
# hash_captured() return "" and every device version falsely read as "matches". Importing
|
|
44
|
+
# it here guarantees the specs exist in every process (web + worker).
|
|
45
|
+
from django.conf import settings
|
|
46
|
+
|
|
47
|
+
from . import route_policy_reconciler # noqa: F401
|
|
48
|
+
from .derived_intent import _register_description_from_cable
|
|
49
|
+
|
|
50
|
+
# The field is always available; enabled templates are read live from NetBox.
|
|
51
|
+
_register_description_from_cable()
|
|
52
|
+
|
|
53
|
+
cfg = settings.PLUGINS_CONFIG.get("netbox_nso_plugin", {})
|
|
54
|
+
self._interface_ip_auto_create = cfg.get("interface_ip_auto_create", False)
|
|
55
|
+
self._static_route_auto_create = cfg.get("static_route_auto_create", False)
|
|
56
|
+
# Link-role resolver: opt-in fallback to M13's classify_interface heuristic
|
|
57
|
+
# when an interface has no explicit NSOLinkRoleAssignment (default off).
|
|
58
|
+
self._link_role_derived_fallback = cfg.get("link_role_derived_fallback", False)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
config = NSOPluginConfig
|