nautobot 2.3.11__py3-none-any.whl → 2.3.12__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.
Potentially problematic release.
This version of nautobot might be problematic. Click here for more details.
- nautobot/core/settings.py +26 -0
- nautobot/core/settings.yaml +31 -0
- nautobot/core/templates/generic/object_notes.html +1 -1
- nautobot/core/templates/generic/object_retrieve.html +1 -1
- nautobot/core/testing/views.py +15 -4
- nautobot/dcim/choices.py +6 -0
- nautobot/dcim/tables/devices.py +2 -6
- nautobot/dcim/templates/dcim/controller_retrieve.html +1 -1
- nautobot/dcim/templates/dcim/device/base.html +1 -1
- nautobot/extras/group_sync.py +42 -0
- nautobot/extras/models/metadata.py +1 -0
- nautobot/extras/models/models.py +1 -1
- nautobot/extras/plugins/__init__.py +2 -1
- nautobot/extras/tables.py +1 -0
- nautobot/extras/templates/extras/inc/job_table.html +1 -1
- nautobot/extras/tests/test_views.py +0 -2
- nautobot/extras/views.py +0 -2
- nautobot/ipam/tables.py +4 -11
- nautobot/ipam/templates/ipam/ipaddresstointerface_retrieve.html +1 -1
- nautobot/project-static/docs/404.html +10 -10
- nautobot/project-static/docs/additional-features/caching.html +1 -2
- nautobot/project-static/docs/additional-features/change-logging.html +1 -2
- nautobot/project-static/docs/additional-features/config-contexts.html +1 -2
- nautobot/project-static/docs/additional-features/healthcheck.html +1 -2
- nautobot/project-static/docs/additional-features/jobs.html +1 -2
- nautobot/project-static/docs/additional-features/prometheus-metrics.html +1 -2
- nautobot/project-static/docs/administration/celery-queues.html +1 -2
- nautobot/project-static/docs/administration/nautobot-server.html +1 -2
- nautobot/project-static/docs/administration/nautobot-shell.html +1 -2
- nautobot/project-static/docs/administration/permissions.html +1 -2
- nautobot/project-static/docs/administration/replicating-nautobot.html +1 -2
- nautobot/project-static/docs/apps/index.html +10 -10
- nautobot/project-static/docs/apps/migrating-jobs-from-nautobot-v1.html +1 -2
- nautobot/project-static/docs/apps/nautobot-apps.html +10 -10
- nautobot/project-static/docs/assets/stylesheets/main.6f8fc17f.min.css +1 -0
- nautobot/project-static/docs/assets/stylesheets/main.6f8fc17f.min.css.map +1 -0
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +10 -10
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +10 -10
- nautobot/project-static/docs/configuration/authentication/ldap.html +1 -2
- nautobot/project-static/docs/configuration/authentication/remote.html +1 -2
- nautobot/project-static/docs/configuration/authentication/sso.html +1 -2
- nautobot/project-static/docs/configuration/index.html +1 -2
- nautobot/project-static/docs/configuration/optional-settings.html +1 -2
- nautobot/project-static/docs/configuration/required-settings.html +1 -2
- nautobot/project-static/docs/core-functionality/circuits.html +1 -2
- nautobot/project-static/docs/core-functionality/device-types.html +1 -2
- nautobot/project-static/docs/core-functionality/devices.html +1 -2
- nautobot/project-static/docs/core-functionality/ipam.html +1 -2
- nautobot/project-static/docs/core-functionality/power.html +1 -2
- nautobot/project-static/docs/core-functionality/secrets.html +1 -2
- nautobot/project-static/docs/core-functionality/services.html +1 -2
- nautobot/project-static/docs/core-functionality/sites-and-racks.html +1 -2
- nautobot/project-static/docs/core-functionality/tenancy.html +1 -2
- nautobot/project-static/docs/core-functionality/virtualization.html +1 -2
- nautobot/project-static/docs/core-functionality/vlans.html +1 -2
- nautobot/project-static/docs/development/application-registry.html +1 -2
- nautobot/project-static/docs/development/apps/api/configuration-view.html +10 -10
- nautobot/project-static/docs/development/apps/api/database-backend-config.html +10 -10
- nautobot/project-static/docs/development/apps/api/models/django-admin.html +10 -10
- nautobot/project-static/docs/development/apps/api/models/global-search.html +10 -10
- nautobot/project-static/docs/development/apps/api/models/graphql.html +10 -10
- nautobot/project-static/docs/development/apps/api/models/index.html +10 -10
- nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +10 -10
- nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +10 -10
- nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +10 -10
- nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +10 -10
- nautobot/project-static/docs/development/apps/api/platform-features/index.html +10 -10
- nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +10 -10
- nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +10 -10
- nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +10 -10
- nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +10 -10
- nautobot/project-static/docs/development/apps/api/platform-features/table-extensions.html +10 -10
- nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +10 -10
- nautobot/project-static/docs/development/apps/api/prometheus.html +10 -10
- nautobot/project-static/docs/development/apps/api/setup.html +10 -10
- nautobot/project-static/docs/development/apps/api/testing.html +10 -10
- nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +10 -10
- nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +10 -10
- nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +10 -10
- nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +10 -10
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-detail-views.html +1 -2
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +10 -10
- nautobot/project-static/docs/development/apps/api/ui-extensions/tabs.html +1 -2
- nautobot/project-static/docs/development/apps/api/views/base-template.html +10 -10
- nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +10 -10
- nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +10 -10
- nautobot/project-static/docs/development/apps/api/views/help-documentation.html +10 -10
- nautobot/project-static/docs/development/apps/api/views/index.html +10 -10
- nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +10 -10
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +10 -10
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +10 -10
- nautobot/project-static/docs/development/apps/api/views/notes.html +10 -10
- nautobot/project-static/docs/development/apps/api/views/rest-api.html +10 -10
- nautobot/project-static/docs/development/apps/api/views/urls.html +10 -10
- nautobot/project-static/docs/development/apps/api/views/view-overrides.html +1 -2
- nautobot/project-static/docs/development/apps/index.html +10 -10
- nautobot/project-static/docs/development/apps/migration/code-updates.html +10 -10
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +10 -10
- nautobot/project-static/docs/development/apps/migration/from-v1.html +10 -10
- nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +10 -10
- nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +10 -10
- nautobot/project-static/docs/development/apps/migration/model-updates/global.html +10 -10
- nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +10 -10
- nautobot/project-static/docs/development/apps/porting-from-netbox.html +10 -10
- nautobot/project-static/docs/development/best-practices.html +1 -2
- nautobot/project-static/docs/development/core/application-registry.html +10 -10
- nautobot/project-static/docs/development/core/best-practices.html +10 -10
- nautobot/project-static/docs/development/core/bootstrap-ui.html +10 -10
- nautobot/project-static/docs/development/core/caching.html +10 -10
- nautobot/project-static/docs/development/core/controllers.html +10 -10
- nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +10 -10
- nautobot/project-static/docs/development/core/extending-models.html +1 -2
- nautobot/project-static/docs/development/core/generic-views.html +10 -10
- nautobot/project-static/docs/development/core/getting-started.html +10 -10
- nautobot/project-static/docs/development/core/homepage.html +10 -10
- nautobot/project-static/docs/development/core/index.html +10 -10
- nautobot/project-static/docs/development/core/model-checklist.html +10 -10
- nautobot/project-static/docs/development/core/model-features.html +10 -10
- nautobot/project-static/docs/development/core/natural-keys.html +10 -10
- nautobot/project-static/docs/development/core/navigation-menu.html +10 -10
- nautobot/project-static/docs/development/core/react-ui.html +1 -2
- nautobot/project-static/docs/development/core/release-checklist.html +10 -10
- nautobot/project-static/docs/development/core/role-internals.html +10 -10
- nautobot/project-static/docs/development/core/settings.html +10 -10
- nautobot/project-static/docs/development/core/style-guide.html +10 -10
- nautobot/project-static/docs/development/core/templates.html +10 -10
- nautobot/project-static/docs/development/core/testing.html +12 -12
- nautobot/project-static/docs/development/core/user-preferences.html +10 -10
- nautobot/project-static/docs/development/docker-compose-advanced-use-cases.html +1 -2
- nautobot/project-static/docs/development/extending-models.html +1 -2
- nautobot/project-static/docs/development/generic-views.html +1 -2
- nautobot/project-static/docs/development/getting-started.html +1 -2
- nautobot/project-static/docs/development/homepage.html +1 -2
- nautobot/project-static/docs/development/index.html +10 -10
- nautobot/project-static/docs/development/jobs/index.html +10 -10
- nautobot/project-static/docs/development/jobs/migration/from-v1.html +10 -10
- nautobot/project-static/docs/development/model-features.html +1 -2
- nautobot/project-static/docs/development/natural-keys.html +1 -2
- nautobot/project-static/docs/development/navigation-menu.html +1 -2
- nautobot/project-static/docs/development/react-ui.html +1 -2
- nautobot/project-static/docs/development/release-checklist.html +1 -2
- nautobot/project-static/docs/development/role-internals.html +1 -2
- nautobot/project-static/docs/development/style-guide.html +1 -2
- nautobot/project-static/docs/development/templates.html +1 -2
- nautobot/project-static/docs/development/testing.html +1 -2
- nautobot/project-static/docs/development/user-preferences.html +1 -2
- nautobot/project-static/docs/docker/index.html +1 -2
- nautobot/project-static/docs/index.html +10 -10
- nautobot/project-static/docs/installation/centos.html +1 -2
- nautobot/project-static/docs/installation/external-authentication.html +1 -2
- nautobot/project-static/docs/installation/http-server.html +1 -2
- nautobot/project-static/docs/installation/index.html +1 -2
- nautobot/project-static/docs/installation/migrating-from-netbox.html +1 -2
- nautobot/project-static/docs/installation/migrating-from-postgresql.html +1 -2
- nautobot/project-static/docs/installation/nautobot.html +1 -2
- nautobot/project-static/docs/installation/region-and-site-data-migration-guide.html +1 -2
- nautobot/project-static/docs/installation/selinux-troubleshooting.html +1 -2
- nautobot/project-static/docs/installation/services.html +1 -2
- nautobot/project-static/docs/installation/ubuntu.html +1 -2
- nautobot/project-static/docs/installation/upgrading-from-nautobot-v1.html +1 -2
- nautobot/project-static/docs/installation/upgrading.html +1 -2
- nautobot/project-static/docs/models/circuits/circuit.html +1 -2
- nautobot/project-static/docs/models/circuits/circuittermination.html +1 -2
- nautobot/project-static/docs/models/circuits/circuittype.html +1 -2
- nautobot/project-static/docs/models/circuits/provider.html +1 -2
- nautobot/project-static/docs/models/circuits/providernetwork.html +1 -2
- nautobot/project-static/docs/models/cloud/cloudaccount.html +1 -2
- nautobot/project-static/docs/models/cloud/cloudnetwork.html +1 -2
- nautobot/project-static/docs/models/cloud/cloudnetworkprefixassignment.html +1 -2
- nautobot/project-static/docs/models/cloud/cloudresourcetype.html +1 -2
- nautobot/project-static/docs/models/cloud/cloudservice.html +1 -2
- nautobot/project-static/docs/models/cloud/cloudservicenetworkassignment.html +1 -2
- nautobot/project-static/docs/models/dcim/cable.html +1 -2
- nautobot/project-static/docs/models/dcim/consoleport.html +1 -2
- nautobot/project-static/docs/models/dcim/consoleporttemplate.html +1 -2
- nautobot/project-static/docs/models/dcim/consoleserverport.html +1 -2
- nautobot/project-static/docs/models/dcim/consoleserverporttemplate.html +1 -2
- nautobot/project-static/docs/models/dcim/controller.html +1 -2
- nautobot/project-static/docs/models/dcim/controllermanageddevicegroup.html +1 -2
- nautobot/project-static/docs/models/dcim/device.html +1 -2
- nautobot/project-static/docs/models/dcim/devicebay.html +1 -2
- nautobot/project-static/docs/models/dcim/devicebaytemplate.html +1 -2
- nautobot/project-static/docs/models/dcim/devicefamily.html +1 -2
- nautobot/project-static/docs/models/dcim/deviceredundancygroup.html +1 -2
- nautobot/project-static/docs/models/dcim/devicetype.html +1 -2
- nautobot/project-static/docs/models/dcim/frontport.html +1 -2
- nautobot/project-static/docs/models/dcim/frontporttemplate.html +1 -2
- nautobot/project-static/docs/models/dcim/interface.html +1 -2
- nautobot/project-static/docs/models/dcim/interfacetemplate.html +1 -2
- nautobot/project-static/docs/models/dcim/inventoryitem.html +1 -2
- nautobot/project-static/docs/models/dcim/location.html +1 -2
- nautobot/project-static/docs/models/dcim/locationtype.html +1 -2
- nautobot/project-static/docs/models/dcim/manufacturer.html +1 -2
- nautobot/project-static/docs/models/dcim/module.html +1 -2
- nautobot/project-static/docs/models/dcim/modulebay.html +1 -2
- nautobot/project-static/docs/models/dcim/modulebaytemplate.html +1 -2
- nautobot/project-static/docs/models/dcim/moduletype.html +1 -2
- nautobot/project-static/docs/models/dcim/platform.html +1 -2
- nautobot/project-static/docs/models/dcim/powerfeed.html +1 -2
- nautobot/project-static/docs/models/dcim/poweroutlet.html +1 -2
- nautobot/project-static/docs/models/dcim/poweroutlettemplate.html +1 -2
- nautobot/project-static/docs/models/dcim/powerpanel.html +1 -2
- nautobot/project-static/docs/models/dcim/powerport.html +1 -2
- nautobot/project-static/docs/models/dcim/powerporttemplate.html +1 -2
- nautobot/project-static/docs/models/dcim/rack.html +1 -2
- nautobot/project-static/docs/models/dcim/rackgroup.html +1 -2
- nautobot/project-static/docs/models/dcim/rackreservation.html +1 -2
- nautobot/project-static/docs/models/dcim/rearport.html +1 -2
- nautobot/project-static/docs/models/dcim/rearporttemplate.html +1 -2
- nautobot/project-static/docs/models/dcim/softwareimagefile.html +1 -2
- nautobot/project-static/docs/models/dcim/softwareversion.html +1 -2
- nautobot/project-static/docs/models/dcim/virtualchassis.html +1 -2
- nautobot/project-static/docs/models/extras/computedfield.html +1 -2
- nautobot/project-static/docs/models/extras/configcontext.html +1 -2
- nautobot/project-static/docs/models/extras/configcontextschema.html +1 -2
- nautobot/project-static/docs/models/extras/contact.html +1 -2
- nautobot/project-static/docs/models/extras/customfield.html +1 -2
- nautobot/project-static/docs/models/extras/customlink.html +1 -2
- nautobot/project-static/docs/models/extras/dynamicgroup.html +1 -2
- nautobot/project-static/docs/models/extras/exporttemplate.html +1 -2
- nautobot/project-static/docs/models/extras/gitrepository.html +1 -2
- nautobot/project-static/docs/models/extras/jobhook.html +1 -2
- nautobot/project-static/docs/models/extras/joblogentry.html +1 -2
- nautobot/project-static/docs/models/extras/jobresult.html +1 -2
- nautobot/project-static/docs/models/extras/metadatachoice.html +1 -2
- nautobot/project-static/docs/models/extras/metadatatype.html +1 -2
- nautobot/project-static/docs/models/extras/objectmetadata.html +1 -2
- nautobot/project-static/docs/models/extras/role.html +1 -2
- nautobot/project-static/docs/models/extras/savedview.html +1 -2
- nautobot/project-static/docs/models/extras/secret.html +1 -2
- nautobot/project-static/docs/models/extras/secretsgroup.html +1 -2
- nautobot/project-static/docs/models/extras/staticgroupassociation.html +1 -2
- nautobot/project-static/docs/models/extras/status.html +1 -2
- nautobot/project-static/docs/models/extras/team.html +1 -2
- nautobot/project-static/docs/models/ipam/ipaddress.html +1 -2
- nautobot/project-static/docs/models/ipam/prefix.html +1 -2
- nautobot/project-static/docs/models/ipam/rir.html +1 -2
- nautobot/project-static/docs/models/ipam/routetarget.html +1 -2
- nautobot/project-static/docs/models/ipam/service.html +1 -2
- nautobot/project-static/docs/models/ipam/vlan.html +1 -2
- nautobot/project-static/docs/models/ipam/vlangroup.html +1 -2
- nautobot/project-static/docs/models/ipam/vrf.html +1 -2
- nautobot/project-static/docs/models/tenancy/tenant.html +1 -2
- nautobot/project-static/docs/models/tenancy/tenantgroup.html +1 -2
- nautobot/project-static/docs/models/virtualization/cluster.html +1 -2
- nautobot/project-static/docs/models/virtualization/clustergroup.html +1 -2
- nautobot/project-static/docs/models/virtualization/clustertype.html +1 -2
- nautobot/project-static/docs/models/virtualization/virtualmachine.html +1 -2
- nautobot/project-static/docs/models/virtualization/vminterface.html +1 -2
- nautobot/project-static/docs/overview/application_stack.html +10 -10
- nautobot/project-static/docs/overview/design_philosophy.html +10 -10
- nautobot/project-static/docs/overview/index.html +1 -2
- nautobot/project-static/docs/plugins/development.html +1 -2
- nautobot/project-static/docs/plugins/index.html +1 -2
- nautobot/project-static/docs/plugins/porting-from-netbox.html +1 -2
- nautobot/project-static/docs/release-notes/index.html +15 -15
- nautobot/project-static/docs/release-notes/version-1.0.html +10 -10
- nautobot/project-static/docs/release-notes/version-1.1.html +10 -10
- nautobot/project-static/docs/release-notes/version-1.2.html +10 -10
- nautobot/project-static/docs/release-notes/version-1.3.html +10 -10
- nautobot/project-static/docs/release-notes/version-1.4.html +10 -10
- nautobot/project-static/docs/release-notes/version-1.5.html +10 -10
- nautobot/project-static/docs/release-notes/version-1.6.html +10 -10
- nautobot/project-static/docs/release-notes/version-2.0.html +10 -10
- nautobot/project-static/docs/release-notes/version-2.1.html +10 -10
- nautobot/project-static/docs/release-notes/version-2.2.html +10 -10
- nautobot/project-static/docs/release-notes/version-2.3.html +308 -154
- nautobot/project-static/docs/requirements.txt +2 -2
- nautobot/project-static/docs/rest-api/overview.html +1 -2
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +270 -270
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +10 -10
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +10 -10
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +65 -12
- nautobot/project-static/docs/user-guide/administration/configuration/index.html +10 -10
- nautobot/project-static/docs/user-guide/administration/configuration/node-configuration.html +1 -2
- nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +1 -2
- nautobot/project-static/docs/user-guide/administration/configuration/redis.html +10 -10
- nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +1 -2
- nautobot/project-static/docs/user-guide/administration/configuration/settings.html +122 -10
- nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +10 -10
- nautobot/project-static/docs/user-guide/administration/guides/caching.html +1 -2
- nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +10 -10
- nautobot/project-static/docs/user-guide/administration/guides/docker.html +10 -10
- nautobot/project-static/docs/user-guide/administration/guides/health-checks.html +10 -10
- nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +1 -2
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +10 -10
- nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +10 -10
- nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +10 -10
- nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +10 -10
- nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +10 -10
- nautobot/project-static/docs/user-guide/administration/guides/selinux-troubleshooting.html +10 -10
- nautobot/project-static/docs/user-guide/administration/installation/app-install.html +10 -10
- nautobot/project-static/docs/user-guide/administration/installation/docker.html +1 -2
- nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +10 -10
- nautobot/project-static/docs/user-guide/administration/installation/health-checks.html +1 -2
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +10 -10
- nautobot/project-static/docs/user-guide/administration/installation/index.html +10 -10
- nautobot/project-static/docs/user-guide/administration/installation/install_system.html +10 -10
- nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +10 -10
- nautobot/project-static/docs/user-guide/administration/installation/selinux-troubleshooting.html +1 -2
- nautobot/project-static/docs/user-guide/administration/installation/services.html +10 -10
- nautobot/project-static/docs/user-guide/administration/installation-extras/docker.html +1 -2
- nautobot/project-static/docs/user-guide/administration/installation-extras/health-checks.html +1 -2
- nautobot/project-static/docs/user-guide/administration/installation-extras/selinux-troubleshooting.html +1 -2
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +10 -10
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +10 -10
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +10 -10
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +10 -10
- nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +10 -10
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +10 -10
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +10 -10
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +10 -10
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +10 -10
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +10 -10
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +10 -10
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +10 -10
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +10 -10
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/graphql.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/relationships.html +10 -10
- nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +10 -10
- nautobot/project-static/docs/user-guide/index.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/note.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/role.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/secret.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/status.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/tag.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +10 -10
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +10 -10
- nautobot/project-static/docs/user-guides/custom-fields.html +1 -2
- nautobot/project-static/docs/user-guides/getting-started/creating-devices.html +1 -2
- nautobot/project-static/docs/user-guides/getting-started/index.html +1 -2
- nautobot/project-static/docs/user-guides/getting-started/interfaces.html +1 -2
- nautobot/project-static/docs/user-guides/getting-started/ipam.html +1 -2
- nautobot/project-static/docs/user-guides/getting-started/platforms.html +1 -2
- nautobot/project-static/docs/user-guides/getting-started/search-bar.html +1 -2
- nautobot/project-static/docs/user-guides/getting-started/tenants.html +1 -2
- nautobot/project-static/docs/user-guides/getting-started/vlans-and-vlan-groups.html +1 -2
- nautobot/project-static/docs/user-guides/git-data-source.html +1 -2
- nautobot/project-static/docs/user-guides/graphql.html +1 -2
- nautobot/project-static/docs/user-guides/ip-address-merge-tool.html +1 -2
- nautobot/project-static/docs/user-guides/relationships.html +1 -2
- nautobot/project-static/docs/user-guides/s3-django-storage.html +1 -2
- nautobot/project-static/js/forms.js +10 -0
- nautobot/virtualization/forms.py +3 -3
- nautobot/virtualization/templates/virtualization/vminterface.html +4 -0
- {nautobot-2.3.11.dist-info → nautobot-2.3.12.dist-info}/METADATA +2 -2
- {nautobot-2.3.11.dist-info → nautobot-2.3.12.dist-info}/RECORD +488 -487
- nautobot/project-static/docs/assets/stylesheets/main.0253249f.min.css +0 -1
- nautobot/project-static/docs/assets/stylesheets/main.0253249f.min.css.map +0 -1
- {nautobot-2.3.11.dist-info → nautobot-2.3.12.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.3.11.dist-info → nautobot-2.3.12.dist-info}/NOTICE +0 -0
- {nautobot-2.3.11.dist-info → nautobot-2.3.12.dist-info}/WHEEL +0 -0
- {nautobot-2.3.11.dist-info → nautobot-2.3.12.dist-info}/entry_points.txt +0 -0
nautobot/core/settings.py
CHANGED
|
@@ -212,6 +212,32 @@ SOCIAL_AUTH_POSTGRES_JSONFIELD = False
|
|
|
212
212
|
# Nautobot related - May be overridden if using custom social auth backend
|
|
213
213
|
SOCIAL_AUTH_BACKEND_PREFIX = "social_core.backends"
|
|
214
214
|
|
|
215
|
+
# Enables adding the OAuth2/OIDC group sync module to the authentication pipeline
|
|
216
|
+
SSO_ENABLE_GROUP_SYNC = is_truthy(os.getenv("NAUTOBOT_SSO_ENABLE_GROUP_SYNC", "false"))
|
|
217
|
+
if SSO_ENABLE_GROUP_SYNC:
|
|
218
|
+
SOCIAL_AUTH_PIPELINE = (
|
|
219
|
+
"social_core.pipeline.social_auth.social_details",
|
|
220
|
+
"social_core.pipeline.social_auth.social_uid",
|
|
221
|
+
"social_core.pipeline.social_auth.auth_allowed",
|
|
222
|
+
"social_core.pipeline.social_auth.social_user",
|
|
223
|
+
"social_core.pipeline.user.get_username",
|
|
224
|
+
"social_core.pipeline.user.create_user",
|
|
225
|
+
"social_core.pipeline.social_auth.associate_user",
|
|
226
|
+
"social_core.pipeline.social_auth.load_extra_data",
|
|
227
|
+
"social_core.pipeline.user.user_details",
|
|
228
|
+
"nautobot.extras.group_sync",
|
|
229
|
+
)
|
|
230
|
+
# OAuth2/OIDC claim where the list of groups the authenticating user is a part of
|
|
231
|
+
SSO_CLAIMS_GROUP = os.getenv("NAUTOBOT_SSO_CLAIMS_GROUP", "groups")
|
|
232
|
+
# list of groups that an authenticating user can be a part of to get the Django staff permission
|
|
233
|
+
SSO_STAFF_GROUPS = [
|
|
234
|
+
group for group in os.getenv("NAUTOBOT_SSO_STAFF_GROUPS", "").split(_CONFIG_SETTING_SEPARATOR) if group != ""
|
|
235
|
+
]
|
|
236
|
+
# list of groups that an authenticating user can be a part of to be a Django super user
|
|
237
|
+
SSO_SUPERUSER_GROUPS = [
|
|
238
|
+
group for group in os.getenv("NAUTOBOT_SSO_SUPERUSER_GROUPS", "").split(_CONFIG_SETTING_SEPARATOR) if group != ""
|
|
239
|
+
]
|
|
240
|
+
|
|
215
241
|
# Job log entry sanitization and similar
|
|
216
242
|
SANITIZER_PATTERNS = [
|
|
217
243
|
# General removal of username-like and password-like tokens
|
nautobot/core/settings.yaml
CHANGED
|
@@ -1705,6 +1705,37 @@ properties:
|
|
|
1705
1705
|
"Single Sign On": "./authentication/sso.md"
|
|
1706
1706
|
"`social-auth-app-django`": "https://python-social-auth.readthedocs.io/en/latest/configuration/django.html"
|
|
1707
1707
|
type: "string"
|
|
1708
|
+
SSO_CLAIMS_GROUP:
|
|
1709
|
+
default: "groups"
|
|
1710
|
+
description: "OAuth2/OIDC claim which will contain the groups which the authenticated user is a member of."
|
|
1711
|
+
environment_variable: "NAUTOBOT_SSO_CLAIMS_GROUP"
|
|
1712
|
+
see_also:
|
|
1713
|
+
"Single Sign On": "./authentication/sso.md"
|
|
1714
|
+
SSO_ENABLE_GROUP_SYNC:
|
|
1715
|
+
default: false
|
|
1716
|
+
type: "boolean"
|
|
1717
|
+
description: "Enables the group syncing authentication module."
|
|
1718
|
+
environment_variable: "NAUTOBOT_SSO_ENABLE_GROUP_SYNC"
|
|
1719
|
+
see_also:
|
|
1720
|
+
"Single Sign On": "./authentication/sso.md"
|
|
1721
|
+
SSO_STAFF_GROUPS:
|
|
1722
|
+
default: []
|
|
1723
|
+
description: "List of groups that a user can be a member of to get the Django Staff permission."
|
|
1724
|
+
environment_variable: "NAUTOBOT_SSO_STAFF_GROUPS"
|
|
1725
|
+
see_also:
|
|
1726
|
+
"Single Sign On": "./authentication/sso.md"
|
|
1727
|
+
items:
|
|
1728
|
+
type: "string"
|
|
1729
|
+
type: "array"
|
|
1730
|
+
SSO_SUPERUSER_GROUPS:
|
|
1731
|
+
default: []
|
|
1732
|
+
description: "List of groups that a user can be a member of to be a Django Super User."
|
|
1733
|
+
environment_variable: "NAUTOBOT_SSO_SUPERUSER_GROUPS"
|
|
1734
|
+
see_also:
|
|
1735
|
+
"Single Sign On": "./authentication/sso.md"
|
|
1736
|
+
items:
|
|
1737
|
+
type: "string"
|
|
1738
|
+
type: "array"
|
|
1708
1739
|
STATIC_ROOT:
|
|
1709
1740
|
"$ref": "#/definitions/absolute_path"
|
|
1710
1741
|
default: "~/.nautobot/static"
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
</div>
|
|
22
22
|
</div>
|
|
23
23
|
<div class="col-md-6 col-md-offset-3 text-right" style="margin-bottom: 20px;">
|
|
24
|
-
<button type="submit" class="btn btn-primary">Create</button>
|
|
24
|
+
<button id="createNote" type="submit" class="btn btn-primary">Create</button>
|
|
25
25
|
<a href="{{ object.get_absolute_url }}" class="btn btn-default">Cancel</a>
|
|
26
26
|
</div>
|
|
27
27
|
</div>
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
<h1>
|
|
55
55
|
<span class="hover_copy">
|
|
56
56
|
<span id="copy_title">{% block title %}{{object.display|default:object}}{% endblock %}</span>
|
|
57
|
-
<button type="button" class="btn btn-inline btn-default hover_copy_button" data-clipboard-
|
|
57
|
+
<button type="button" class="btn btn-inline btn-default hover_copy_button" data-clipboard-text="{{ object.display | default:object }}">
|
|
58
58
|
<span class="mdi mdi-content-copy"></span>
|
|
59
59
|
</button>
|
|
60
60
|
</span>
|
nautobot/core/testing/views.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import contextlib
|
|
1
2
|
import re
|
|
2
3
|
from typing import Optional, Sequence
|
|
3
4
|
from unittest import skipIf
|
|
@@ -792,11 +793,16 @@ class ViewTestCases:
|
|
|
792
793
|
response = self.client.get(f"{self._get_url('list')}?id={instance1.pk}")
|
|
793
794
|
self.assertHttpStatus(response, 200)
|
|
794
795
|
content = utils.extract_page_body(response.content.decode(response.charset))
|
|
796
|
+
# There should be only one row in the table
|
|
797
|
+
self.assertIn('<tr class="even', content)
|
|
798
|
+
self.assertNotIn('<tr class="odd', content)
|
|
795
799
|
if hasattr(self.model, "name"):
|
|
796
800
|
self.assertRegex(content, r">\s*" + re.escape(escape(instance1.name)) + r"\s*<", msg=content)
|
|
797
801
|
self.assertNotRegex(content, r">\s*" + re.escape(escape(instance2.name)) + r"\s*<", msg=content)
|
|
798
|
-
|
|
799
|
-
|
|
802
|
+
with contextlib.suppress(AttributeError):
|
|
803
|
+
# Some models, such as ObjectMetadata, don't have a detail URL
|
|
804
|
+
if instance1.get_absolute_url() in content:
|
|
805
|
+
self.assertNotIn(instance2.get_absolute_url(), content, msg=content)
|
|
800
806
|
|
|
801
807
|
@override_settings(EXEMPT_VIEW_PERMISSIONS=["*"], STRICT_FILTERING=True)
|
|
802
808
|
def test_list_objects_unknown_filter_strict_filtering(self):
|
|
@@ -833,11 +839,16 @@ class ViewTestCases:
|
|
|
833
839
|
content = utils.extract_page_body(response.content.decode(response.charset))
|
|
834
840
|
self.assertNotIn("Unknown filter field", content, msg=content)
|
|
835
841
|
self.assertIn("None", content, msg=content)
|
|
842
|
+
# There should be at least two rows in the table
|
|
843
|
+
self.assertIn('<tr class="even', content)
|
|
844
|
+
self.assertIn('<tr class="odd', content)
|
|
836
845
|
if hasattr(self.model, "name"):
|
|
837
846
|
self.assertRegex(content, r">\s*" + re.escape(escape(instance1.name)) + r"\s*<", msg=content)
|
|
838
847
|
self.assertRegex(content, r">\s*" + re.escape(escape(instance2.name)) + r"\s*<", msg=content)
|
|
839
|
-
|
|
840
|
-
|
|
848
|
+
with contextlib.suppress(AttributeError):
|
|
849
|
+
# Some models, such as ObjectMetadata, don't have a detail URL
|
|
850
|
+
if instance1.get_absolute_url() in content:
|
|
851
|
+
self.assertIn(instance2.get_absolute_url(), content, msg=content)
|
|
841
852
|
|
|
842
853
|
@override_settings(EXEMPT_VIEW_PERMISSIONS=[])
|
|
843
854
|
def test_list_objects_without_permission(self):
|
nautobot/dcim/choices.py
CHANGED
|
@@ -804,6 +804,9 @@ class InterfaceTypeChoices(ChoiceSet):
|
|
|
804
804
|
TYPE_400GE_CFP8 = "400gbase-x-cfp8"
|
|
805
805
|
TYPE_800GE_QSFP_DD = "800gbase-x-qsfpdd"
|
|
806
806
|
TYPE_800GE_OSFP = "800gbase-x-osfp"
|
|
807
|
+
TYPE_800GE_OSFP_XD = "800gbase-x-osfp-xd"
|
|
808
|
+
TYPE_1600GE_OSFP = "1600gbase-x-osfp"
|
|
809
|
+
TYPE_1600GE_OSFP_XD = "1600gbase-x-osfp-xd"
|
|
807
810
|
|
|
808
811
|
# Ethernet Backplane
|
|
809
812
|
TYPE_1GE_KX = "1000base-kx"
|
|
@@ -977,6 +980,9 @@ class InterfaceTypeChoices(ChoiceSet):
|
|
|
977
980
|
(TYPE_400GE_CFP8, "CPF8 (400GE)"),
|
|
978
981
|
(TYPE_800GE_QSFP_DD, "QSFP-DD (800GE)"),
|
|
979
982
|
(TYPE_800GE_OSFP, "OSFP (800GE)"),
|
|
983
|
+
(TYPE_800GE_OSFP_XD, "OSFP-XD (800GE)"),
|
|
984
|
+
(TYPE_1600GE_OSFP, "OSFP (1600GE)"),
|
|
985
|
+
(TYPE_1600GE_OSFP_XD, "OSFP-XD (1600GE)"),
|
|
980
986
|
),
|
|
981
987
|
),
|
|
982
988
|
(
|
nautobot/dcim/tables/devices.py
CHANGED
|
@@ -220,13 +220,11 @@ class DeviceTable(StatusTableMixin, RoleTableMixin, BaseTable):
|
|
|
220
220
|
)
|
|
221
221
|
|
|
222
222
|
|
|
223
|
-
class DeviceImportTable(BaseTable):
|
|
223
|
+
class DeviceImportTable(StatusTableMixin, RoleTableMixin, BaseTable):
|
|
224
224
|
name = tables.TemplateColumn(template_code=DEVICE_LINK)
|
|
225
|
-
status = ColoredLabelColumn()
|
|
226
225
|
tenant = TenantColumn()
|
|
227
226
|
location = tables.Column(linkify=True)
|
|
228
227
|
rack = tables.Column(linkify=True)
|
|
229
|
-
role = tables.Column(verbose_name="Role")
|
|
230
228
|
device_type = tables.Column(verbose_name="Type")
|
|
231
229
|
|
|
232
230
|
class Meta(BaseTable.Meta):
|
|
@@ -1333,15 +1331,13 @@ class SoftwareVersionTable(StatusTableMixin, BaseTable):
|
|
|
1333
1331
|
)
|
|
1334
1332
|
|
|
1335
1333
|
|
|
1336
|
-
class ControllerTable(BaseTable):
|
|
1334
|
+
class ControllerTable(StatusTableMixin, RoleTableMixin, BaseTable):
|
|
1337
1335
|
"""Table for list view."""
|
|
1338
1336
|
|
|
1339
1337
|
pk = ToggleColumn()
|
|
1340
1338
|
name = tables.Column(linkify=True)
|
|
1341
|
-
status = ColoredLabelColumn()
|
|
1342
1339
|
location = tables.Column(linkify=True)
|
|
1343
1340
|
platform = tables.Column(linkify=True)
|
|
1344
|
-
role = tables.Column(linkify=True)
|
|
1345
1341
|
tenant = TenantColumn()
|
|
1346
1342
|
external_integration = tables.Column(linkify=True)
|
|
1347
1343
|
controller_device = tables.Column(linkify=True)
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
<span class="hover_copy">
|
|
59
59
|
<h1>
|
|
60
60
|
<span id="devicename">{% block title %}{{ object }}{% endblock title %}</span>
|
|
61
|
-
<button class="btn btn-xs btn-default hover_copy_button" data-clipboard-
|
|
61
|
+
<button class="btn btn-xs btn-default hover_copy_button" data-clipboard-text="{{ object }}">
|
|
62
62
|
<span class="mdi mdi-content-copy"></span>
|
|
63
63
|
</button>
|
|
64
64
|
</h1>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"""Additional functions to process an OAuth2/OIDC user."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
|
|
5
|
+
from django.conf import settings
|
|
6
|
+
from django.contrib.auth.models import Group
|
|
7
|
+
|
|
8
|
+
logger = logging.getLogger(__name__)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
CLAIMS_GROUP_NAME = getattr(settings, "NAUTOBOT_SSO_CLAIMS_GROUP", "groups")
|
|
12
|
+
""" Which claim to look at in the OAuth2/OIDC response
|
|
13
|
+
|
|
14
|
+
For Okta you can look at `Okta -> Authorization Servers -> Claims`. And a reasonable
|
|
15
|
+
default is "groups". For Azure a reasonable default is "roles".
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
SUPERUSER_GROUPS = getattr(settings, "NAUTOBOT_SSO_SUPERUSER_GROUPS", [])
|
|
19
|
+
STAFF_GROUPS = getattr(settings, "NAUTOBOT_SSO_STAFF_GROUPS", [])
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def group_sync(uid, user=None, response=None, *args, **kwargs):
|
|
23
|
+
"""Sync the users groups from OAuth2/OIDC auth and set staff/superuser as appropriate."""
|
|
24
|
+
if user and response and CLAIMS_GROUP_NAME and response.get(CLAIMS_GROUP_NAME, False):
|
|
25
|
+
group_memberships = response.get(CLAIMS_GROUP_NAME)
|
|
26
|
+
is_staff = False
|
|
27
|
+
is_superuser = False
|
|
28
|
+
logger.debug(f"User {uid} is a member of {', '.join(group_memberships)}")
|
|
29
|
+
# Make sure all groups exist in Nautobot
|
|
30
|
+
group_ids = []
|
|
31
|
+
for group in group_memberships:
|
|
32
|
+
if group in SUPERUSER_GROUPS:
|
|
33
|
+
is_superuser = True
|
|
34
|
+
if group in STAFF_GROUPS:
|
|
35
|
+
is_staff = True
|
|
36
|
+
group_ids.append(Group.objects.get_or_create(name=group)[0].id)
|
|
37
|
+
user.groups.set(group_ids)
|
|
38
|
+
user.is_superuser = is_superuser
|
|
39
|
+
user.is_staff = is_staff
|
|
40
|
+
user.save()
|
|
41
|
+
else:
|
|
42
|
+
logger.debug(f"Did not receive groups from OAuth2/OIDC, response: {response}")
|
|
@@ -201,6 +201,7 @@ class ObjectMetadata(ChangeLoggedModel, BaseModel):
|
|
|
201
201
|
objects = ObjectMetadataManager()
|
|
202
202
|
natural_key_field_names = ["pk"]
|
|
203
203
|
documentation_static_path = "docs/user-guide/platform-functionality/objectmetadata.html"
|
|
204
|
+
is_metadata_associable_model = False
|
|
204
205
|
|
|
205
206
|
class Meta:
|
|
206
207
|
ordering = ["metadata_type"]
|
nautobot/extras/models/models.py
CHANGED
|
@@ -831,7 +831,7 @@ class Note(ChangeLoggedModel, BaseModel):
|
|
|
831
831
|
unique_together = [["assigned_object_type", "assigned_object_id", "user_name", "created"]]
|
|
832
832
|
|
|
833
833
|
def __str__(self):
|
|
834
|
-
return f"{self.assigned_object} - {self.created.isoformat()}"
|
|
834
|
+
return f"{self.assigned_object} - {self.created.isoformat() if self.created else None}"
|
|
835
835
|
|
|
836
836
|
def save(self, *args, **kwargs):
|
|
837
837
|
# Record the user's name as static strings
|
|
@@ -207,8 +207,9 @@ class NautobotAppConfig(NautobotConfig):
|
|
|
207
207
|
override_views = import_object(f"{self.__module__}.{self.override_views}")
|
|
208
208
|
if override_views is not None:
|
|
209
209
|
for qualified_view_name, view in override_views.items():
|
|
210
|
+
view_class_name = view.view_class.__name__ if hasattr(view, "view_class") else view.cls.__name__
|
|
210
211
|
self.features.setdefault("overridden_views", []).append(
|
|
211
|
-
(qualified_view_name, f"{view.__module__}.{
|
|
212
|
+
(qualified_view_name, f"{view.__module__}.{view_class_name}")
|
|
212
213
|
)
|
|
213
214
|
register_override_views(override_views, self.name)
|
|
214
215
|
|
nautobot/extras/tables.py
CHANGED
|
@@ -978,6 +978,7 @@ class MetadataTypeTable(BaseTable):
|
|
|
978
978
|
|
|
979
979
|
class ObjectMetadataTable(BaseTable):
|
|
980
980
|
pk = ToggleColumn()
|
|
981
|
+
# NOTE: there is no identity column in this table; this is intentional as we have no detail view for ObjectMetadata
|
|
981
982
|
metadata_type = tables.Column(linkify=True)
|
|
982
983
|
assigned_object = tables.TemplateColumn(
|
|
983
984
|
template_code=ASSIGNED_OBJECT, verbose_name="Assigned object", orderable=False
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
</th>
|
|
29
29
|
</tr>
|
|
30
30
|
{% endifchanged %}
|
|
31
|
-
<tr class="collapseme-{{ row.record.grouping|slugify }}{% if not perms.extras.run_job or not row.record.runnable %} disabled{% endif %} collapse in" data-parent="#accordion" {{ row.attrs.as_html }}>
|
|
31
|
+
<tr class="{% cycle 'even' 'odd' %} collapseme-{{ row.record.grouping|slugify }}{% if not perms.extras.run_job or not row.record.runnable %} disabled{% endif %} collapse in" data-parent="#accordion" {{ row.attrs.as_html }}>
|
|
32
32
|
{% for column, cell in row.items %}
|
|
33
33
|
<td {{ column.attrs.td.as_html }}>{{ cell }}</td>
|
|
34
34
|
{% endfor %}
|
|
@@ -3033,8 +3033,6 @@ class ObjectChangeTestCase(TestCase):
|
|
|
3033
3033
|
|
|
3034
3034
|
|
|
3035
3035
|
class ObjectMetadataTestCase(
|
|
3036
|
-
ViewTestCases.GetObjectViewTestCase,
|
|
3037
|
-
ViewTestCases.GetObjectChangelogViewTestCase,
|
|
3038
3036
|
ViewTestCases.ListObjectsViewTestCase,
|
|
3039
3037
|
):
|
|
3040
3038
|
model = ObjectMetadata
|
nautobot/extras/views.py
CHANGED
nautobot/ipam/tables.py
CHANGED
|
@@ -175,14 +175,6 @@ VLAN_PREFIXES = """
|
|
|
175
175
|
{% endfor %}
|
|
176
176
|
"""
|
|
177
177
|
|
|
178
|
-
VLAN_ROLE_LINK = """
|
|
179
|
-
{% if record.role %}
|
|
180
|
-
<a href="{% url 'ipam:vlan_list' %}?role={{ record.role.name }}">{{ record.role }}</a>
|
|
181
|
-
{% else %}
|
|
182
|
-
—
|
|
183
|
-
{% endif %}
|
|
184
|
-
"""
|
|
185
|
-
|
|
186
178
|
VLANGROUP_ADD_VLAN = """
|
|
187
179
|
{% with next_vid=record.get_next_available_vid %}
|
|
188
180
|
{% if next_vid and perms.ipam.add_vlan %}
|
|
@@ -346,7 +338,9 @@ class PrefixTable(StatusTableMixin, RoleTableMixin, BaseTable):
|
|
|
346
338
|
prefix = tables.TemplateColumn(
|
|
347
339
|
template_code=PREFIX_COPY_LINK, attrs={"td": {"class": "text-nowrap"}}, order_by=("network", "prefix_length")
|
|
348
340
|
)
|
|
349
|
-
vrf_count = LinkedCountColumn(
|
|
341
|
+
vrf_count = LinkedCountColumn(
|
|
342
|
+
viewname="ipam:vrf_list", url_params={"prefix": "pk"}, reverse_lookup="prefixes", verbose_name="VRFs"
|
|
343
|
+
)
|
|
350
344
|
tenant = TenantColumn()
|
|
351
345
|
namespace = tables.Column(linkify=True)
|
|
352
346
|
vlan = tables.Column(linkify=True, verbose_name="VLAN")
|
|
@@ -766,7 +760,7 @@ class VLANVirtualMachinesTable(VLANMembersTable):
|
|
|
766
760
|
fields = ("virtual_machine", "name", "tagged", "actions")
|
|
767
761
|
|
|
768
762
|
|
|
769
|
-
class InterfaceVLANTable(StatusTableMixin, BaseTable):
|
|
763
|
+
class InterfaceVLANTable(StatusTableMixin, RoleTableMixin, BaseTable):
|
|
770
764
|
"""
|
|
771
765
|
List VLANs assigned to a specific Interface.
|
|
772
766
|
"""
|
|
@@ -775,7 +769,6 @@ class InterfaceVLANTable(StatusTableMixin, BaseTable):
|
|
|
775
769
|
tagged = BooleanColumn()
|
|
776
770
|
vlan_group = tables.Column(accessor=Accessor("vlan_group__name"), verbose_name="Group")
|
|
777
771
|
tenant = TenantColumn()
|
|
778
|
-
role = tables.TemplateColumn(template_code=VLAN_ROLE_LINK)
|
|
779
772
|
location_count = LinkedCountColumn(
|
|
780
773
|
viewname="dcim:location_list",
|
|
781
774
|
url_params={"vlans": "pk"},
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
{% block masthead %}
|
|
6
6
|
<h1>
|
|
7
|
-
<span class="hover_copy"><span id="copy_title">{{ object }}</span><button type="button" class="btn btn-inline btn-default hover_copy_button" data-clipboard-
|
|
7
|
+
<span class="hover_copy"><span id="copy_title">{{ object }}</span><button type="button" class="btn btn-inline btn-default hover_copy_button" data-clipboard-text="{{ object }}">
|
|
8
8
|
<span class="mdi mdi-content-copy"></span>
|
|
9
9
|
</button>
|
|
10
10
|
</span>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
<link rel="icon" href="/projects/core/en/stable/assets/favicon.ico">
|
|
15
|
-
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.
|
|
15
|
+
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.46">
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
<link rel="stylesheet" href="/projects/core/en/stable/assets/stylesheets/main.
|
|
23
|
+
<link rel="stylesheet" href="/projects/core/en/stable/assets/stylesheets/main.6f8fc17f.min.css">
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
<link rel="stylesheet" href="/projects/core/en/stable/assets/stylesheets/palette.06af60db.min.css">
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
<style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.
|
|
35
|
+
<style>:root{--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M288 0H128c-17.7 0-32 14.3-32 32s14.3 32 32 32v132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6 0 480.9 31.1 512 69.4 512h309.2c38.3 0 69.4-31.1 69.4-69.4 0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32S337.7 0 320 0zm-96 196.8V64h64v132.8c0 23.7 6.6 46.9 19 67.1l34.5 56.1h-171l34.5-56.1c12.4-20.2 19-43.4 19-67.1"/></svg>');}</style>
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
|
|
@@ -197,7 +197,7 @@
|
|
|
197
197
|
<a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
|
|
198
198
|
<div class="md-source__icon md-icon">
|
|
199
199
|
|
|
200
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.
|
|
200
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
|
201
201
|
</div>
|
|
202
202
|
<div class="md-source__repository">
|
|
203
203
|
GitHub
|
|
@@ -355,7 +355,7 @@
|
|
|
355
355
|
<a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
|
|
356
356
|
<div class="md-source__icon md-icon">
|
|
357
357
|
|
|
358
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.
|
|
358
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
|
359
359
|
</div>
|
|
360
360
|
<div class="md-source__repository">
|
|
361
361
|
GitHub
|
|
@@ -8600,7 +8600,7 @@
|
|
|
8600
8600
|
|
|
8601
8601
|
|
|
8602
8602
|
<a href="https://blog.networktocode.com/blog/tags/nautobot" target="_blank" rel="noopener" title="Network to Code Blog" class="md-social__link">
|
|
8603
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.
|
|
8603
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M0 64c0-17.7 14.3-32 32-32 229.8 0 416 186.2 416 416 0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96 14.3 96 0 81.7 0 64m0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0m32-256c159.1 0 288 128.9 288 288 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224-17.7 0-32-14.3-32-32s14.3-32 32-32"/></svg>
|
|
8604
8604
|
</a>
|
|
8605
8605
|
|
|
8606
8606
|
|
|
@@ -8608,7 +8608,7 @@
|
|
|
8608
8608
|
|
|
8609
8609
|
|
|
8610
8610
|
<a href="https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" target="_blank" rel="noopener" title="Nautobot Videos" class="md-social__link">
|
|
8611
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.
|
|
8611
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305m-317.51 213.508V175.185l142.739 81.205z"/></svg>
|
|
8612
8612
|
</a>
|
|
8613
8613
|
|
|
8614
8614
|
|
|
@@ -8616,7 +8616,7 @@
|
|
|
8616
8616
|
|
|
8617
8617
|
|
|
8618
8618
|
<a href="https://www.networktocode.com/community/" target="_blank" rel="noopener" title="Network to Code Community" class="md-social__link">
|
|
8619
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.
|
|
8619
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1s21.16-47.06 47.06-47.06h47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06S448 171 448 196.9s-21.16 47.06-47.06 47.06h-47.06zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06S309 480 283.1 480s-47.06-21.16-47.06-47.06v-47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06s21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06z"/></svg>
|
|
8620
8620
|
</a>
|
|
8621
8621
|
|
|
8622
8622
|
|
|
@@ -8624,7 +8624,7 @@
|
|
|
8624
8624
|
|
|
8625
8625
|
|
|
8626
8626
|
<a href="https://github.com/nautobot/nautobot" target="_blank" rel="noopener" title="GitHub Repo" class="md-social__link">
|
|
8627
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.
|
|
8627
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
|
|
8628
8628
|
</a>
|
|
8629
8629
|
|
|
8630
8630
|
|
|
@@ -8632,7 +8632,7 @@
|
|
|
8632
8632
|
|
|
8633
8633
|
|
|
8634
8634
|
<a href="https://twitter.com/networktocode" target="_blank" rel="noopener" title="Network to Code Twitter" class="md-social__link">
|
|
8635
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.
|
|
8635
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253"/></svg>
|
|
8636
8636
|
</a>
|
|
8637
8637
|
|
|
8638
8638
|
</div>
|
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
<meta charset="utf-8">
|
|
6
6
|
<title>Redirecting...</title>
|
|
7
7
|
<link rel="canonical" href="../user-guide/administration/configuration/redis.html">
|
|
8
|
-
<meta name="robots" content="noindex">
|
|
9
8
|
<script>var anchor=window.location.hash.substr(1);location.href="../user-guide/administration/configuration/redis.html"+(anchor?"#"+anchor:"")</script>
|
|
10
9
|
<meta http-equiv="refresh" content="0; url=../user-guide/administration/configuration/redis.html">
|
|
11
10
|
</head>
|
|
12
11
|
<body>
|
|
13
|
-
|
|
12
|
+
You're being redirected to a <a href="../user-guide/administration/configuration/redis.html">new destination</a>.
|
|
14
13
|
</body>
|
|
15
14
|
</html>
|
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
<meta charset="utf-8">
|
|
6
6
|
<title>Redirecting...</title>
|
|
7
7
|
<link rel="canonical" href="../user-guide/platform-functionality/change-logging.html">
|
|
8
|
-
<meta name="robots" content="noindex">
|
|
9
8
|
<script>var anchor=window.location.hash.substr(1);location.href="../user-guide/platform-functionality/change-logging.html"+(anchor?"#"+anchor:"")</script>
|
|
10
9
|
<meta http-equiv="refresh" content="0; url=../user-guide/platform-functionality/change-logging.html">
|
|
11
10
|
</head>
|
|
12
11
|
<body>
|
|
13
|
-
|
|
12
|
+
You're being redirected to a <a href="../user-guide/platform-functionality/change-logging.html">new destination</a>.
|
|
14
13
|
</body>
|
|
15
14
|
</html>
|
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
<meta charset="utf-8">
|
|
6
6
|
<title>Redirecting...</title>
|
|
7
7
|
<link rel="canonical" href="../user-guide/core-data-model/extras/configcontext.html">
|
|
8
|
-
<meta name="robots" content="noindex">
|
|
9
8
|
<script>var anchor=window.location.hash.substr(1);location.href="../user-guide/core-data-model/extras/configcontext.html"+(anchor?"#"+anchor:"")</script>
|
|
10
9
|
<meta http-equiv="refresh" content="0; url=../user-guide/core-data-model/extras/configcontext.html">
|
|
11
10
|
</head>
|
|
12
11
|
<body>
|
|
13
|
-
|
|
12
|
+
You're being redirected to a <a href="../user-guide/core-data-model/extras/configcontext.html">new destination</a>.
|
|
14
13
|
</body>
|
|
15
14
|
</html>
|
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
<meta charset="utf-8">
|
|
6
6
|
<title>Redirecting...</title>
|
|
7
7
|
<link rel="canonical" href="../user-guide/administration/guides/health-checks.html">
|
|
8
|
-
<meta name="robots" content="noindex">
|
|
9
8
|
<script>var anchor=window.location.hash.substr(1);location.href="../user-guide/administration/guides/health-checks.html"+(anchor?"#"+anchor:"")</script>
|
|
10
9
|
<meta http-equiv="refresh" content="0; url=../user-guide/administration/guides/health-checks.html">
|
|
11
10
|
</head>
|
|
12
11
|
<body>
|
|
13
|
-
|
|
12
|
+
You're being redirected to a <a href="../user-guide/administration/guides/health-checks.html">new destination</a>.
|
|
14
13
|
</body>
|
|
15
14
|
</html>
|
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
<meta charset="utf-8">
|
|
6
6
|
<title>Redirecting...</title>
|
|
7
7
|
<link rel="canonical" href="../development/jobs/index.html">
|
|
8
|
-
<meta name="robots" content="noindex">
|
|
9
8
|
<script>var anchor=window.location.hash.substr(1);location.href="../development/jobs/index.html"+(anchor?"#"+anchor:"")</script>
|
|
10
9
|
<meta http-equiv="refresh" content="0; url=../development/jobs/index.html">
|
|
11
10
|
</head>
|
|
12
11
|
<body>
|
|
13
|
-
|
|
12
|
+
You're being redirected to a <a href="../development/jobs/index.html">new destination</a>.
|
|
14
13
|
</body>
|
|
15
14
|
</html>
|
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
<meta charset="utf-8">
|
|
6
6
|
<title>Redirecting...</title>
|
|
7
7
|
<link rel="canonical" href="../user-guide/administration/guides/prometheus-metrics.html">
|
|
8
|
-
<meta name="robots" content="noindex">
|
|
9
8
|
<script>var anchor=window.location.hash.substr(1);location.href="../user-guide/administration/guides/prometheus-metrics.html"+(anchor?"#"+anchor:"")</script>
|
|
10
9
|
<meta http-equiv="refresh" content="0; url=../user-guide/administration/guides/prometheus-metrics.html">
|
|
11
10
|
</head>
|
|
12
11
|
<body>
|
|
13
|
-
|
|
12
|
+
You're being redirected to a <a href="../user-guide/administration/guides/prometheus-metrics.html">new destination</a>.
|
|
14
13
|
</body>
|
|
15
14
|
</html>
|
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
<meta charset="utf-8">
|
|
6
6
|
<title>Redirecting...</title>
|
|
7
7
|
<link rel="canonical" href="../user-guide/administration/guides/celery-queues.html">
|
|
8
|
-
<meta name="robots" content="noindex">
|
|
9
8
|
<script>var anchor=window.location.hash.substr(1);location.href="../user-guide/administration/guides/celery-queues.html"+(anchor?"#"+anchor:"")</script>
|
|
10
9
|
<meta http-equiv="refresh" content="0; url=../user-guide/administration/guides/celery-queues.html">
|
|
11
10
|
</head>
|
|
12
11
|
<body>
|
|
13
|
-
|
|
12
|
+
You're being redirected to a <a href="../user-guide/administration/guides/celery-queues.html">new destination</a>.
|
|
14
13
|
</body>
|
|
15
14
|
</html>
|
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
<meta charset="utf-8">
|
|
6
6
|
<title>Redirecting...</title>
|
|
7
7
|
<link rel="canonical" href="../user-guide/administration/tools/nautobot-server.html">
|
|
8
|
-
<meta name="robots" content="noindex">
|
|
9
8
|
<script>var anchor=window.location.hash.substr(1);location.href="../user-guide/administration/tools/nautobot-server.html"+(anchor?"#"+anchor:"")</script>
|
|
10
9
|
<meta http-equiv="refresh" content="0; url=../user-guide/administration/tools/nautobot-server.html">
|
|
11
10
|
</head>
|
|
12
11
|
<body>
|
|
13
|
-
|
|
12
|
+
You're being redirected to a <a href="../user-guide/administration/tools/nautobot-server.html">new destination</a>.
|
|
14
13
|
</body>
|
|
15
14
|
</html>
|
|
@@ -5,11 +5,10 @@
|
|
|
5
5
|
<meta charset="utf-8">
|
|
6
6
|
<title>Redirecting...</title>
|
|
7
7
|
<link rel="canonical" href="../user-guide/administration/tools/nautobot-shell.html">
|
|
8
|
-
<meta name="robots" content="noindex">
|
|
9
8
|
<script>var anchor=window.location.hash.substr(1);location.href="../user-guide/administration/tools/nautobot-shell.html"+(anchor?"#"+anchor:"")</script>
|
|
10
9
|
<meta http-equiv="refresh" content="0; url=../user-guide/administration/tools/nautobot-shell.html">
|
|
11
10
|
</head>
|
|
12
11
|
<body>
|
|
13
|
-
|
|
12
|
+
You're being redirected to a <a href="../user-guide/administration/tools/nautobot-shell.html">new destination</a>.
|
|
14
13
|
</body>
|
|
15
14
|
</html>
|