nautobot 2.3.1__py3-none-any.whl → 2.3.3__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.
- nautobot/core/celery/schedulers.py +18 -0
- nautobot/core/settings.yaml +3 -3
- nautobot/core/tables.py +1 -1
- nautobot/core/templates/home.html +4 -3
- nautobot/core/templatetags/buttons.py +1 -1
- nautobot/core/tests/runner.py +27 -9
- nautobot/core/tests/test_utils.py +13 -0
- nautobot/core/utils/lookup.py +7 -1
- nautobot/core/views/utils.py +3 -3
- nautobot/dcim/factory.py +3 -3
- nautobot/dcim/tables/devices.py +7 -7
- nautobot/dcim/templates/dcim/device.html +12 -0
- nautobot/dcim/templates/dcim/softwareimagefile_retrieve.html +12 -0
- nautobot/dcim/utils.py +9 -6
- nautobot/extras/api/serializers.py +2 -0
- nautobot/extras/context_managers.py +11 -4
- nautobot/extras/filters/__init__.py +14 -2
- nautobot/extras/forms/forms.py +6 -0
- nautobot/extras/forms/mixins.py +2 -2
- nautobot/extras/jobs.py +0 -1
- nautobot/extras/management/__init__.py +3 -0
- nautobot/extras/migrations/0115_scheduledjob_time_zone.py +23 -0
- nautobot/extras/models/groups.py +4 -1
- nautobot/extras/models/jobs.py +24 -11
- nautobot/extras/tables.py +34 -4
- nautobot/extras/templates/extras/scheduledjob.html +13 -2
- nautobot/extras/tests/test_api.py +17 -18
- nautobot/extras/tests/test_context_managers.py +33 -14
- nautobot/extras/tests/test_dynamicgroups.py +11 -0
- nautobot/extras/tests/test_filters.py +57 -1
- nautobot/extras/tests/test_models.py +304 -1
- nautobot/extras/tests/test_views.py +4 -2
- nautobot/extras/views.py +7 -0
- nautobot/ipam/api/views.py +9 -2
- nautobot/ipam/choices.py +17 -0
- nautobot/ipam/factory.py +6 -0
- nautobot/ipam/filters.py +1 -1
- nautobot/ipam/forms.py +5 -3
- nautobot/ipam/migrations/0048_vrf_status.py +23 -0
- nautobot/ipam/migrations/0049_vrf_data_migration.py +25 -0
- nautobot/ipam/models.py +6 -0
- nautobot/ipam/tables.py +3 -2
- nautobot/ipam/templates/ipam/vrf.html +4 -0
- nautobot/ipam/templates/ipam/vrf_edit.html +1 -0
- nautobot/ipam/tests/test_api.py +44 -3
- nautobot/ipam/tests/test_views.py +3 -0
- nautobot/project-static/css/base.css +6 -0
- nautobot/project-static/docs/404.html +23 -23
- nautobot/project-static/docs/apps/index.html +25 -25
- nautobot/project-static/docs/apps/nautobot-apps.html +24 -24
- nautobot/project-static/docs/assets/javascripts/bundle.56dfad97.min.js +16 -0
- nautobot/project-static/docs/assets/javascripts/bundle.56dfad97.min.js.map +7 -0
- nautobot/project-static/docs/assets/javascripts/workers/{search.b8dbb3d2.min.js → search.07f07601.min.js} +1 -1
- nautobot/project-static/docs/assets/javascripts/workers/{search.b8dbb3d2.min.js.map → search.07f07601.min.js.map} +1 -1
- nautobot/project-static/docs/assets/stylesheets/main.35f28582.min.css +1 -0
- nautobot/project-static/docs/assets/stylesheets/main.35f28582.min.css.map +1 -0
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +26 -26
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +26 -26
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +58 -58
- nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +32 -31
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +31 -31
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +25 -25
- nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +25 -25
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +30 -30
- nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +34 -34
- nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +41 -41
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +48 -48
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +92 -92
- nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +41 -41
- nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +85 -85
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +84 -84
- nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +26 -26
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +28 -28
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +40 -40
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +78 -78
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +77 -77
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +26 -26
- nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +80 -80
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +67 -67
- nautobot/project-static/docs/development/apps/api/configuration-view.html +25 -25
- nautobot/project-static/docs/development/apps/api/database-backend-config.html +25 -25
- nautobot/project-static/docs/development/apps/api/models/django-admin.html +25 -25
- nautobot/project-static/docs/development/apps/api/models/global-search.html +25 -25
- nautobot/project-static/docs/development/apps/api/models/graphql.html +25 -25
- nautobot/project-static/docs/development/apps/api/models/index.html +25 -25
- nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +25 -25
- nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +25 -25
- nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +25 -25
- nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +25 -25
- nautobot/project-static/docs/development/apps/api/platform-features/index.html +25 -25
- nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +25 -25
- nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +25 -25
- nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +25 -25
- nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +25 -25
- nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +25 -25
- nautobot/project-static/docs/development/apps/api/prometheus.html +25 -25
- nautobot/project-static/docs/development/apps/api/setup.html +25 -25
- nautobot/project-static/docs/development/apps/api/testing.html +25 -25
- nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +25 -25
- nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +25 -25
- nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +25 -25
- nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +25 -25
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +25 -25
- nautobot/project-static/docs/development/apps/api/views/base-template.html +25 -25
- nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +25 -25
- nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +25 -25
- nautobot/project-static/docs/development/apps/api/views/help-documentation.html +25 -25
- nautobot/project-static/docs/development/apps/api/views/index.html +25 -25
- nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +25 -25
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +25 -25
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +25 -25
- nautobot/project-static/docs/development/apps/api/views/notes.html +25 -25
- nautobot/project-static/docs/development/apps/api/views/rest-api.html +25 -25
- nautobot/project-static/docs/development/apps/api/views/urls.html +25 -25
- nautobot/project-static/docs/development/apps/index.html +25 -25
- nautobot/project-static/docs/development/apps/migration/code-updates.html +25 -25
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +25 -25
- nautobot/project-static/docs/development/apps/migration/from-v1.html +25 -25
- nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +25 -25
- nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +25 -25
- nautobot/project-static/docs/development/apps/migration/model-updates/global.html +25 -25
- nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +25 -25
- nautobot/project-static/docs/development/apps/porting-from-netbox.html +25 -25
- nautobot/project-static/docs/development/core/application-registry.html +25 -25
- nautobot/project-static/docs/development/core/best-practices.html +25 -25
- nautobot/project-static/docs/development/core/bootstrap-ui.html +25 -25
- nautobot/project-static/docs/development/core/caching.html +25 -25
- nautobot/project-static/docs/development/core/controllers.html +25 -25
- nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +25 -25
- nautobot/project-static/docs/development/core/generic-views.html +25 -25
- nautobot/project-static/docs/development/core/getting-started.html +25 -25
- nautobot/project-static/docs/development/core/homepage.html +25 -25
- nautobot/project-static/docs/development/core/index.html +25 -25
- nautobot/project-static/docs/development/core/model-checklist.html +25 -25
- nautobot/project-static/docs/development/core/model-features.html +25 -25
- nautobot/project-static/docs/development/core/natural-keys.html +25 -25
- nautobot/project-static/docs/development/core/navigation-menu.html +25 -25
- nautobot/project-static/docs/development/core/release-checklist.html +25 -25
- nautobot/project-static/docs/development/core/role-internals.html +25 -25
- nautobot/project-static/docs/development/core/settings.html +25 -25
- nautobot/project-static/docs/development/core/style-guide.html +25 -25
- nautobot/project-static/docs/development/core/templates.html +25 -25
- nautobot/project-static/docs/development/core/testing.html +25 -25
- nautobot/project-static/docs/development/core/user-preferences.html +25 -25
- nautobot/project-static/docs/development/index.html +25 -25
- nautobot/project-static/docs/development/jobs/index.html +25 -25
- nautobot/project-static/docs/development/jobs/migration/from-v1.html +25 -25
- nautobot/project-static/docs/index.html +30 -30
- nautobot/project-static/docs/overview/application_stack.html +31 -31
- nautobot/project-static/docs/overview/design_philosophy.html +25 -25
- nautobot/project-static/docs/release-notes/index.html +25 -25
- nautobot/project-static/docs/release-notes/version-1.0.html +25 -25
- nautobot/project-static/docs/release-notes/version-1.1.html +25 -25
- nautobot/project-static/docs/release-notes/version-1.2.html +25 -25
- nautobot/project-static/docs/release-notes/version-1.3.html +25 -25
- nautobot/project-static/docs/release-notes/version-1.4.html +25 -25
- nautobot/project-static/docs/release-notes/version-1.5.html +25 -25
- nautobot/project-static/docs/release-notes/version-1.6.html +25 -25
- nautobot/project-static/docs/release-notes/version-2.0.html +25 -25
- nautobot/project-static/docs/release-notes/version-2.1.html +25 -25
- nautobot/project-static/docs/release-notes/version-2.2.html +25 -25
- nautobot/project-static/docs/release-notes/version-2.3.html +318 -61
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +271 -542
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +25 -25
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +25 -25
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +25 -25
- nautobot/project-static/docs/user-guide/administration/configuration/index.html +25 -25
- nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +28 -28
- nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +25 -25
- nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +25 -25
- nautobot/project-static/docs/user-guide/administration/guides/caching.html +25 -25
- nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +25 -25
- nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +25 -25
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +25 -25
- nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +25 -25
- nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +25 -25
- nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +25 -25
- nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +25 -25
- nautobot/project-static/docs/user-guide/administration/installation/app-install.html +25 -25
- nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +25 -25
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +25 -25
- nautobot/project-static/docs/user-guide/administration/installation/index.html +25 -25
- nautobot/project-static/docs/user-guide/administration/installation/install_system.html +25 -25
- nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +25 -25
- nautobot/project-static/docs/user-guide/administration/installation/services.html +25 -25
- nautobot/project-static/docs/user-guide/administration/installation-extras/docker.html +25 -25
- nautobot/project-static/docs/user-guide/administration/installation-extras/health-checks.html +25 -25
- nautobot/project-static/docs/user-guide/administration/installation-extras/selinux-troubleshooting.html +25 -25
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +25 -25
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +25 -25
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +25 -25
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +25 -25
- nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +25 -25
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +25 -25
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +25 -25
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +25 -25
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +25 -25
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +25 -25
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +25 -25
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +25 -25
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +25 -25
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/graphql.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/relationships.html +25 -25
- nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +25 -25
- nautobot/project-static/docs/user-guide/index.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/note.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/role.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/secret.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/status.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/tag.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +25 -25
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +25 -25
- nautobot/project-static/js/homepage_layout.js +3 -0
- {nautobot-2.3.1.dist-info → nautobot-2.3.3.dist-info}/METADATA +4 -4
- {nautobot-2.3.1.dist-info → nautobot-2.3.3.dist-info}/RECORD +335 -332
- nautobot/project-static/docs/assets/javascripts/bundle.fe8b6f2b.min.js +0 -29
- nautobot/project-static/docs/assets/javascripts/bundle.fe8b6f2b.min.js.map +0 -7
- nautobot/project-static/docs/assets/stylesheets/main.3cba04c6.min.css +0 -1
- nautobot/project-static/docs/assets/stylesheets/main.3cba04c6.min.css.map +0 -1
- {nautobot-2.3.1.dist-info → nautobot-2.3.3.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.3.1.dist-info → nautobot-2.3.3.dist-info}/NOTICE +0 -0
- {nautobot-2.3.1.dist-info → nautobot-2.3.3.dist-info}/WHEEL +0 -0
- {nautobot-2.3.1.dist-info → nautobot-2.3.3.dist-info}/entry_points.txt +0 -0
nautobot/ipam/tests/test_api.py
CHANGED
|
@@ -13,7 +13,7 @@ from nautobot.core.testing import APITestCase, APIViewTestCases, disable_warning
|
|
|
13
13
|
from nautobot.core.testing.api import APITransactionTestCase
|
|
14
14
|
from nautobot.dcim.choices import InterfaceTypeChoices
|
|
15
15
|
from nautobot.dcim.models import Device, DeviceType, Interface, Location, LocationType, Manufacturer
|
|
16
|
-
from nautobot.extras.models import Role, Status
|
|
16
|
+
from nautobot.extras.models import CustomField, Role, Status
|
|
17
17
|
from nautobot.ipam import choices
|
|
18
18
|
from nautobot.ipam.models import (
|
|
19
19
|
IPAddress,
|
|
@@ -84,11 +84,14 @@ class VRFTest(APIViewTestCases.APIViewTestCase):
|
|
|
84
84
|
@classmethod
|
|
85
85
|
def setUpTestData(cls):
|
|
86
86
|
namespace = Namespace.objects.first()
|
|
87
|
+
vrf_statuses = Status.objects.get_for_model(VRF)
|
|
88
|
+
|
|
87
89
|
cls.create_data = [
|
|
88
90
|
{
|
|
89
91
|
"namespace": namespace.pk,
|
|
90
92
|
"name": "VRF 4",
|
|
91
93
|
"rd": "65000:4",
|
|
94
|
+
"status": vrf_statuses.first().pk,
|
|
92
95
|
},
|
|
93
96
|
{
|
|
94
97
|
"namespace": namespace.pk,
|
|
@@ -98,10 +101,12 @@ class VRFTest(APIViewTestCases.APIViewTestCase):
|
|
|
98
101
|
{
|
|
99
102
|
"name": "VRF 6",
|
|
100
103
|
"rd": "65000:6",
|
|
104
|
+
"status": vrf_statuses.last().pk,
|
|
101
105
|
},
|
|
102
106
|
]
|
|
103
107
|
cls.bulk_update_data = {
|
|
104
108
|
"description": "New description",
|
|
109
|
+
"status": vrf_statuses.last().pk,
|
|
105
110
|
}
|
|
106
111
|
|
|
107
112
|
|
|
@@ -332,6 +337,8 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
|
|
|
332
337
|
cls.statuses = Status.objects.get_for_model(Prefix)
|
|
333
338
|
cls.status = cls.statuses[0]
|
|
334
339
|
cls.locations = Location.objects.get_for_model(Prefix)
|
|
340
|
+
cls.custom_field = CustomField.objects.create(key="prefixcf", label="Prefix Custom Field", type="text")
|
|
341
|
+
cls.custom_field.content_types.add(ContentType.objects.get_for_model(Prefix))
|
|
335
342
|
cls.create_data = [
|
|
336
343
|
{
|
|
337
344
|
"prefix": "192.168.4.0/24",
|
|
@@ -346,6 +353,7 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
|
|
|
346
353
|
"rir": rir.pk,
|
|
347
354
|
"type": choices.PrefixTypeChoices.TYPE_NETWORK,
|
|
348
355
|
"namespace": cls.namespace.pk,
|
|
356
|
+
"custom_fields": {"prefixcf": "hello world"},
|
|
349
357
|
},
|
|
350
358
|
{
|
|
351
359
|
"prefix": "192.168.6.0/24",
|
|
@@ -435,6 +443,17 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
|
|
|
435
443
|
for i, p in enumerate(response.data):
|
|
436
444
|
self.assertEqual(p["prefix"], str(available_prefixes[i]))
|
|
437
445
|
|
|
446
|
+
def test_prefix_display_value(self):
|
|
447
|
+
"""
|
|
448
|
+
Test that the `display` field is correctly populated.
|
|
449
|
+
"""
|
|
450
|
+
url = reverse("ipam-api:prefix-list")
|
|
451
|
+
self.add_permissions("ipam.view_prefix")
|
|
452
|
+
|
|
453
|
+
response = self.client.get(f"{url}?depth=1", **self.header)
|
|
454
|
+
for p in response.data["results"]:
|
|
455
|
+
self.assertEqual(p["display"], f'{p["prefix"]}: {p["namespace"]["name"]}')
|
|
456
|
+
|
|
438
457
|
def test_create_single_available_prefix(self):
|
|
439
458
|
"""
|
|
440
459
|
Test retrieval of the first available prefix within a parent prefix.
|
|
@@ -457,12 +476,16 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
|
|
|
457
476
|
"prefix_length": child_prefix_length,
|
|
458
477
|
"status": self.status.pk,
|
|
459
478
|
"description": f"Test Prefix {i + 1}",
|
|
479
|
+
"custom_fields": {"prefixcf": f"value {i+1}"},
|
|
460
480
|
}
|
|
461
481
|
response = self.client.post(url, data, format="json", **self.header)
|
|
462
482
|
self.assertHttpStatus(response, status.HTTP_201_CREATED)
|
|
463
483
|
self.assertEqual(response.data["prefix"], str(prefixes_to_be_created[i]))
|
|
464
484
|
self.assertEqual(str(response.data["namespace"]["url"]), self.absolute_api_url(prefix.namespace))
|
|
465
485
|
self.assertEqual(response.data["description"], data["description"])
|
|
486
|
+
self.assertIn("custom_fields", response.data)
|
|
487
|
+
self.assertIn("prefixcf", response.data["custom_fields"])
|
|
488
|
+
self.assertEqual(response.data["custom_fields"]["prefixcf"], data["custom_fields"]["prefixcf"])
|
|
466
489
|
|
|
467
490
|
# Try to create one more prefix, and expect a HTTP 204 response.
|
|
468
491
|
# This feels wrong to me (shouldn't it be a 4xx or 5xx?) but it's how the API has historically behaved.
|
|
@@ -501,6 +524,7 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
|
|
|
501
524
|
"prefix_length": child_prefix_length,
|
|
502
525
|
"description": "Test Prefix 1",
|
|
503
526
|
"status": self.status.pk,
|
|
527
|
+
"custom_fields": {"prefixcf": "value 1"},
|
|
504
528
|
},
|
|
505
529
|
{
|
|
506
530
|
"prefix_length": child_prefix_length,
|
|
@@ -537,6 +561,9 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
|
|
|
537
561
|
response = self.client.post(url, data[:4], format="json", **self.header)
|
|
538
562
|
self.assertHttpStatus(response, status.HTTP_201_CREATED)
|
|
539
563
|
self.assertEqual(len(response.data), 4)
|
|
564
|
+
self.assertIn("custom_fields", response.data[0])
|
|
565
|
+
self.assertIn("prefixcf", response.data[0]["custom_fields"])
|
|
566
|
+
self.assertEqual("value 1", response.data[0]["custom_fields"]["prefixcf"])
|
|
540
567
|
|
|
541
568
|
def test_list_available_ips(self):
|
|
542
569
|
"""
|
|
@@ -571,6 +598,8 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
|
|
|
571
598
|
type=choices.PrefixTypeChoices.TYPE_NETWORK,
|
|
572
599
|
status=self.status,
|
|
573
600
|
)
|
|
601
|
+
cf = CustomField.objects.create(key="ipcf", label="IP Custom Field", type="text")
|
|
602
|
+
cf.content_types.add(ContentType.objects.get_for_model(IPAddress))
|
|
574
603
|
url = reverse("ipam-api:prefix-available-ips", kwargs={"pk": prefix.pk})
|
|
575
604
|
self.add_permissions("ipam.view_prefix", "ipam.add_ipaddress", "extras.view_status")
|
|
576
605
|
|
|
@@ -579,11 +608,15 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
|
|
|
579
608
|
data = {
|
|
580
609
|
"description": f"Test IP {i}",
|
|
581
610
|
"status": self.status.pk,
|
|
611
|
+
"custom_fields": {"ipcf": f"value {i}"},
|
|
582
612
|
}
|
|
583
613
|
response = self.client.post(url, data, format="json", **self.header)
|
|
584
614
|
self.assertHttpStatus(response, status.HTTP_201_CREATED)
|
|
585
615
|
self.assertEqual(str(response.data["parent"]["url"]), self.absolute_api_url(prefix))
|
|
586
616
|
self.assertEqual(response.data["description"], data["description"])
|
|
617
|
+
self.assertIn("custom_fields", response.data)
|
|
618
|
+
self.assertIn("ipcf", response.data["custom_fields"])
|
|
619
|
+
self.assertEqual(f"value {i}", response.data["custom_fields"]["ipcf"])
|
|
587
620
|
|
|
588
621
|
# Try to create one more IP
|
|
589
622
|
response = self.client.post(url, {"status": self.status.pk}, format="json", **self.header)
|
|
@@ -601,21 +634,29 @@ class PrefixTest(APIViewTestCases.APIViewTestCase):
|
|
|
601
634
|
namespace=self.namespace,
|
|
602
635
|
status=self.status,
|
|
603
636
|
)
|
|
637
|
+
cf = CustomField.objects.create(key="ipcf", label="IP Custom Field", type="text")
|
|
638
|
+
cf.content_types.add(ContentType.objects.get_for_model(IPAddress))
|
|
604
639
|
url = reverse("ipam-api:prefix-available-ips", kwargs={"pk": prefix.pk})
|
|
605
640
|
self.add_permissions("ipam.view_prefix", "ipam.add_ipaddress", "extras.view_status")
|
|
606
641
|
|
|
607
642
|
# Try to create seven IPs (only six are available)
|
|
608
|
-
data = [
|
|
643
|
+
data = [
|
|
644
|
+
{"description": f"Test IP {i}", "status": self.status.pk, "custom_fields": {"ipcf": str(i)}}
|
|
645
|
+
for i in range(1, 8)
|
|
646
|
+
] # 7 IPs
|
|
609
647
|
response = self.client.post(url, data, format="json", **self.header)
|
|
610
648
|
# This feels wrong to me (shouldn't it be a 4xx or 5xx?) but it's how the API has historically behaved.
|
|
611
649
|
self.assertHttpStatus(response, status.HTTP_204_NO_CONTENT)
|
|
612
650
|
self.assertIn("detail", response.data)
|
|
613
651
|
|
|
614
652
|
# Create all six available IPs in a single request
|
|
615
|
-
data = [
|
|
653
|
+
data = data[:6]
|
|
616
654
|
response = self.client.post(url, data, format="json", **self.header)
|
|
617
655
|
self.assertHttpStatus(response, status.HTTP_201_CREATED)
|
|
618
656
|
self.assertEqual(len(response.data), 6)
|
|
657
|
+
self.assertIn("custom_fields", response.data[0])
|
|
658
|
+
self.assertIn("ipcf", response.data[0]["custom_fields"])
|
|
659
|
+
self.assertEqual("1", response.data[0]["custom_fields"]["ipcf"])
|
|
619
660
|
|
|
620
661
|
|
|
621
662
|
class PrefixLocationAssignmentTest(APIViewTestCases.APIViewTestCase):
|
|
@@ -73,6 +73,7 @@ class VRFTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|
|
73
73
|
tenants = Tenant.objects.all()[:2]
|
|
74
74
|
namespace = Prefix.objects.first().namespace
|
|
75
75
|
prefixes = Prefix.objects.filter(namespace=namespace)
|
|
76
|
+
vrf_statuses = Status.objects.get_for_model(VRF)
|
|
76
77
|
|
|
77
78
|
cls.form_data = {
|
|
78
79
|
"name": "VRF X",
|
|
@@ -82,9 +83,11 @@ class VRFTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|
|
82
83
|
"description": "A new VRF",
|
|
83
84
|
"prefixes": [prefixes[1].id],
|
|
84
85
|
"tags": [t.pk for t in Tag.objects.get_for_model(VRF)],
|
|
86
|
+
"status": vrf_statuses.first().pk,
|
|
85
87
|
}
|
|
86
88
|
|
|
87
89
|
cls.bulk_edit_data = {
|
|
90
|
+
"status": vrf_statuses.first().pk,
|
|
88
91
|
"tenant": tenants[1].pk,
|
|
89
92
|
"description": "New description",
|
|
90
93
|
"namespace": prefixes[0].namespace.id,
|
|
@@ -862,6 +862,12 @@ td span.hover_copy:hover .hover_copy_button {
|
|
|
862
862
|
.collapse-icon {
|
|
863
863
|
float: right;
|
|
864
864
|
cursor: pointer !important;
|
|
865
|
+
transition: transform 0.3s ease;
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
/* Rotates element 180 degrees */
|
|
869
|
+
.rotated180 {
|
|
870
|
+
transform: rotate(180deg);
|
|
865
871
|
}
|
|
866
872
|
|
|
867
873
|
/* Draggable homepage panels fade in effect on page load */
|
|
@@ -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.
|
|
15
|
+
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.34">
|
|
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.35f28582.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.6.0 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
|
|
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.6.0 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
|
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
|
|
55
55
|
<link rel="stylesheet" href="/projects/core/en/stable/assets/extra.css">
|
|
56
56
|
|
|
57
|
-
<script>__md_scope=new URL("/projects/core/en/stable/",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
57
|
+
<script>__md_scope=new URL("/projects/core/en/stable/",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
</a>
|
|
99
99
|
<label class="md-header__button md-icon" for="__drawer">
|
|
100
100
|
|
|
101
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3
|
|
101
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
|
|
102
102
|
</label>
|
|
103
103
|
<div class="md-header__title" data-md-component="header-title">
|
|
104
104
|
<div class="md-header__ellipsis">
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="black" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
|
|
127
127
|
|
|
128
128
|
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
|
|
129
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12
|
|
129
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg>
|
|
130
130
|
</label>
|
|
131
131
|
|
|
132
132
|
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
|
|
137
137
|
|
|
138
138
|
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
|
|
139
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06
|
|
139
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg>
|
|
140
140
|
</label>
|
|
141
141
|
|
|
142
142
|
|
|
@@ -144,13 +144,13 @@
|
|
|
144
144
|
|
|
145
145
|
|
|
146
146
|
|
|
147
|
-
<script>var
|
|
147
|
+
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
|
148
148
|
|
|
149
149
|
|
|
150
150
|
|
|
151
151
|
<label class="md-header__button md-icon" for="__search">
|
|
152
152
|
|
|
153
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.
|
|
153
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
|
154
154
|
</label>
|
|
155
155
|
<div class="md-search" data-md-component="search" role="dialog">
|
|
156
156
|
<label class="md-search__overlay" for="__search"></label>
|
|
@@ -159,20 +159,20 @@
|
|
|
159
159
|
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
160
160
|
<label class="md-search__icon md-icon" for="__search">
|
|
161
161
|
|
|
162
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.
|
|
162
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
|
163
163
|
|
|
164
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8
|
|
164
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
|
165
165
|
</label>
|
|
166
166
|
<nav class="md-search__options" aria-label="Search">
|
|
167
167
|
|
|
168
168
|
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
|
|
169
169
|
|
|
170
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.
|
|
170
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
|
|
171
171
|
</a>
|
|
172
172
|
|
|
173
173
|
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
174
174
|
|
|
175
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41
|
|
175
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
|
|
176
176
|
</button>
|
|
177
177
|
</nav>
|
|
178
178
|
|
|
@@ -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.6.0 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.
|
|
200
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 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.6.0 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.
|
|
358
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 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
|
|
@@ -8626,7 +8626,7 @@
|
|
|
8626
8626
|
</div>
|
|
8627
8627
|
|
|
8628
8628
|
|
|
8629
|
-
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var
|
|
8629
|
+
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
|
|
8630
8630
|
|
|
8631
8631
|
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
8632
8632
|
</div>
|
|
@@ -8667,7 +8667,7 @@
|
|
|
8667
8667
|
|
|
8668
8668
|
|
|
8669
8669
|
<a href="https://blog.networktocode.com/blog/tags/nautobot" target="_blank" rel="noopener" title="Network to Code Blog" class="md-social__link">
|
|
8670
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 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
|
|
8670
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 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>
|
|
8671
8671
|
</a>
|
|
8672
8672
|
|
|
8673
8673
|
|
|
@@ -8675,7 +8675,7 @@
|
|
|
8675
8675
|
|
|
8676
8676
|
|
|
8677
8677
|
<a href="https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" target="_blank" rel="noopener" title="Nautobot Videos" class="md-social__link">
|
|
8678
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.6.0 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.
|
|
8678
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.6.0 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>
|
|
8679
8679
|
</a>
|
|
8680
8680
|
|
|
8681
8681
|
|
|
@@ -8683,7 +8683,7 @@
|
|
|
8683
8683
|
|
|
8684
8684
|
|
|
8685
8685
|
<a href="https://www.networktocode.com/community/" target="_blank" rel="noopener" title="Network to Code Community" class="md-social__link">
|
|
8686
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 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.
|
|
8686
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 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>
|
|
8687
8687
|
</a>
|
|
8688
8688
|
|
|
8689
8689
|
|
|
@@ -8691,7 +8691,7 @@
|
|
|
8691
8691
|
|
|
8692
8692
|
|
|
8693
8693
|
<a href="https://github.com/nautobot/nautobot" target="_blank" rel="noopener" title="GitHub Repo" class="md-social__link">
|
|
8694
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.0 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.
|
|
8694
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.0 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>
|
|
8695
8695
|
</a>
|
|
8696
8696
|
|
|
8697
8697
|
|
|
@@ -8699,7 +8699,7 @@
|
|
|
8699
8699
|
|
|
8700
8700
|
|
|
8701
8701
|
<a href="https://twitter.com/networktocode" target="_blank" rel="noopener" title="Network to Code Twitter" class="md-social__link">
|
|
8702
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.6.0 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.
|
|
8702
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.6.0 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>
|
|
8703
8703
|
</a>
|
|
8704
8704
|
|
|
8705
8705
|
</div>
|
|
@@ -8714,10 +8714,10 @@
|
|
|
8714
8714
|
</div>
|
|
8715
8715
|
|
|
8716
8716
|
|
|
8717
|
-
<script id="__config" type="application/json">{"base": "/projects/core/en/stable/", "features": ["content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "/projects/core/en/stable/assets/javascripts/workers/search.
|
|
8717
|
+
<script id="__config" type="application/json">{"base": "/projects/core/en/stable/", "features": ["content.code.copy", "content.tabs.link", "navigation.footer", "navigation.tabs", "navigation.tabs.sticky", "navigation.tracking", "search.highlight", "search.share", "search.suggest"], "search": "/projects/core/en/stable/assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
|
8718
8718
|
|
|
8719
8719
|
|
|
8720
|
-
<script src="/projects/core/en/stable/assets/javascripts/bundle.
|
|
8720
|
+
<script src="/projects/core/en/stable/assets/javascripts/bundle.56dfad97.min.js"></script>
|
|
8721
8721
|
|
|
8722
8722
|
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
|
8723
8723
|
|