nautobot 2.2.8__py3-none-any.whl → 2.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of nautobot might be problematic. Click here for more details.
- nautobot/apps/forms.py +4 -0
- nautobot/apps/models.py +10 -1
- nautobot/circuits/__init__.py +0 -1
- nautobot/circuits/apps.py +1 -0
- nautobot/circuits/factory.py +15 -3
- nautobot/circuits/filters.py +13 -0
- nautobot/circuits/forms.py +13 -0
- nautobot/circuits/migrations/0021_alter_circuit_status_alter_circuittermination__path.py +32 -0
- nautobot/circuits/migrations/0022_circuittermination_cloud_network.py +25 -0
- nautobot/circuits/models.py +16 -3
- nautobot/circuits/tables.py +16 -2
- nautobot/circuits/templates/circuits/circuittermination_create.html +10 -2
- nautobot/circuits/templates/circuits/circuittermination_retrieve.html +6 -0
- nautobot/circuits/templates/circuits/inc/circuit_termination.html +6 -1
- nautobot/circuits/tests/test_api.py +7 -5
- nautobot/circuits/tests/test_filters.py +12 -5
- nautobot/circuits/tests/test_models.py +33 -2
- nautobot/circuits/views.py +2 -3
- nautobot/cloud/__init__.py +0 -0
- nautobot/cloud/api/__init__.py +0 -0
- nautobot/cloud/api/serializers.py +54 -0
- nautobot/cloud/api/urls.py +16 -0
- nautobot/cloud/api/views.py +48 -0
- nautobot/cloud/apps.py +13 -0
- nautobot/cloud/factory.py +113 -0
- nautobot/cloud/filters.py +187 -0
- nautobot/cloud/forms.py +339 -0
- nautobot/cloud/homepage.py +43 -0
- nautobot/cloud/migrations/0001_initial.py +304 -0
- nautobot/cloud/migrations/__init__.py +0 -0
- nautobot/cloud/models.py +246 -0
- nautobot/cloud/navigation.py +85 -0
- nautobot/cloud/tables.py +157 -0
- nautobot/cloud/templates/cloud/cloudaccount_retrieve.html +43 -0
- nautobot/cloud/templates/cloud/cloudnetwork_retrieve.html +122 -0
- nautobot/cloud/templates/cloud/cloudnetwork_update.html +33 -0
- nautobot/cloud/templates/cloud/cloudresourcetype_retrieve.html +111 -0
- nautobot/cloud/templates/cloud/cloudservice_retrieve.html +69 -0
- nautobot/cloud/templates/cloud/cloudservice_update.html +25 -0
- nautobot/cloud/tests/__init__.py +0 -0
- nautobot/cloud/tests/test_api.py +248 -0
- nautobot/cloud/tests/test_filters.py +125 -0
- nautobot/cloud/tests/test_models.py +43 -0
- nautobot/cloud/tests/test_views.py +153 -0
- nautobot/cloud/urls.py +14 -0
- nautobot/cloud/views.py +181 -0
- nautobot/core/__init__.py +0 -3
- nautobot/core/api/metadata.py +1 -0
- nautobot/core/api/parsers.py +7 -1
- nautobot/core/api/urls.py +1 -0
- nautobot/core/api/utils.py +1 -0
- nautobot/core/api/views.py +4 -0
- nautobot/core/apps/__init__.py +6 -3
- nautobot/core/constants.py +8 -0
- nautobot/core/factory.py +32 -1
- nautobot/core/filters.py +110 -14
- nautobot/core/forms/fields.py +10 -4
- nautobot/core/forms/forms.py +11 -3
- nautobot/core/forms/widgets.py +18 -1
- nautobot/core/graphql/generators.py +2 -2
- nautobot/core/graphql/schema.py +28 -7
- nautobot/core/jobs/__init__.py +20 -3
- nautobot/core/jobs/cleanup.py +100 -0
- nautobot/core/jobs/groups.py +38 -0
- nautobot/core/management/commands/generate_test_data.py +116 -3
- nautobot/core/models/__init__.py +34 -9
- nautobot/core/models/generics.py +19 -3
- nautobot/core/models/name_color_content_types.py +7 -28
- nautobot/core/models/querysets.py +4 -3
- nautobot/core/models/tree_queries.py +1 -1
- nautobot/core/models/utils.py +21 -5
- nautobot/core/settings.py +15 -19
- nautobot/core/settings.yaml +48 -13
- nautobot/core/settings_funcs.py +103 -0
- nautobot/core/tables.py +130 -56
- nautobot/core/templates/admin/search_form.html +1 -1
- nautobot/core/templates/buttons/add.html +11 -3
- nautobot/core/templates/buttons/consolidated_bulk_action_buttons.html +13 -0
- nautobot/core/templates/buttons/consolidated_detail_view_action_buttons.html +13 -0
- nautobot/core/templates/buttons/export.html +101 -53
- nautobot/core/templates/buttons/job_import.html +11 -3
- nautobot/core/templates/generic/object_bulk_destroy.html +3 -1
- nautobot/core/templates/generic/object_bulk_update.html +3 -1
- nautobot/core/templates/generic/object_changelog.html +0 -9
- nautobot/core/templates/generic/object_list.html +156 -17
- nautobot/core/templates/generic/object_retrieve.html +80 -16
- nautobot/core/templates/inc/extras_features_edit_form_fields.html +8 -0
- nautobot/core/templates/inc/javascript.html +2 -0
- nautobot/core/templates/inc/media.html +2 -2
- nautobot/core/templates/inc/nav_menu.html +1 -0
- nautobot/core/templates/inc/paginator.html +7 -7
- nautobot/core/templates/inc/search_panel.html +2 -2
- nautobot/core/templates/inc/table.html +2 -2
- nautobot/core/templates/nautobot_config.py.j2 +28 -8
- nautobot/core/templates/utilities/templatetags/dynamic_group_assignment_modal.html +37 -0
- nautobot/core/templates/utilities/templatetags/filter_form_modal.html +2 -2
- nautobot/core/templates/utilities/templatetags/saved_view_modal.html +38 -0
- nautobot/core/templates/utilities/theme_preview.html +25 -8
- nautobot/core/templates/utilities/worker_status.html +152 -0
- nautobot/core/templatetags/buttons.py +335 -38
- nautobot/core/templatetags/form_helpers.py +1 -1
- nautobot/core/templatetags/helpers.py +181 -11
- nautobot/core/testing/api.py +5 -4
- nautobot/core/testing/filters.py +63 -14
- nautobot/core/testing/mixins.py +46 -0
- nautobot/core/testing/models.py +22 -0
- nautobot/core/testing/schema.py +4 -8
- nautobot/core/testing/views.py +31 -14
- nautobot/core/tests/integration/test_general_functionality.py +1 -1
- nautobot/core/tests/integration/test_import_objects_ui.py +1 -0
- nautobot/core/tests/integration/test_swagger.py +1 -1
- nautobot/core/tests/nautobot_config.py +0 -1
- nautobot/core/tests/runner.py +2 -2
- nautobot/core/tests/test_api.py +1 -0
- nautobot/core/tests/test_authentication.py +7 -2
- nautobot/core/tests/test_filters.py +11 -9
- nautobot/core/tests/test_forms.py +9 -0
- nautobot/core/tests/test_graphql.py +27 -16
- nautobot/core/tests/test_jobs.py +204 -2
- nautobot/core/tests/test_tables.py +3 -1
- nautobot/core/tests/test_templatetags_helpers.py +12 -5
- nautobot/core/tests/test_templatetags_netutils.py +3 -3
- nautobot/core/tests/test_utils.py +31 -20
- nautobot/core/tests/test_views.py +6 -6
- nautobot/core/urls.py +8 -3
- nautobot/core/utils/deprecation.py +29 -0
- nautobot/core/utils/filtering.py +12 -9
- nautobot/core/utils/lookup.py +37 -2
- nautobot/core/utils/requests.py +4 -1
- nautobot/core/views/__init__.py +137 -24
- nautobot/core/views/generic.py +119 -67
- nautobot/core/views/mixins.py +105 -36
- nautobot/core/views/paginator.py +9 -3
- nautobot/core/views/renderers.py +121 -56
- nautobot/core/views/utils.py +81 -1
- nautobot/dcim/__init__.py +0 -1
- nautobot/dcim/api/serializers.py +180 -44
- nautobot/dcim/api/urls.py +7 -3
- nautobot/dcim/api/views.py +53 -7
- nautobot/dcim/apps.py +3 -0
- nautobot/dcim/choices.py +25 -0
- nautobot/dcim/constants.py +7 -0
- nautobot/dcim/factory.py +252 -18
- nautobot/dcim/filters/__init__.py +373 -193
- nautobot/dcim/filters/mixins.py +274 -1
- nautobot/dcim/forms.py +834 -121
- nautobot/dcim/graphql/types.py +2 -2
- nautobot/dcim/homepage.py +1 -1
- nautobot/dcim/migrations/0059_add_role_field_to_interface_models.py +27 -0
- nautobot/dcim/migrations/0060_alter_cable_status_alter_consoleport__path_and_more.py +303 -0
- nautobot/dcim/migrations/0061_module_models.py +862 -0
- nautobot/dcim/migrations/0062_module_data_migration.py +25 -0
- nautobot/dcim/models/__init__.py +8 -0
- nautobot/dcim/models/cables.py +15 -0
- nautobot/dcim/models/device_component_templates.py +207 -53
- nautobot/dcim/models/device_components.py +282 -99
- nautobot/dcim/models/devices.py +472 -13
- nautobot/dcim/models/racks.py +0 -1
- nautobot/dcim/navigation.py +47 -0
- nautobot/dcim/signals.py +3 -3
- nautobot/dcim/tables/__init__.py +35 -23
- nautobot/dcim/tables/devices.py +248 -47
- nautobot/dcim/tables/devicetypes.py +65 -9
- nautobot/dcim/tables/racks.py +5 -1
- nautobot/dcim/tables/template_code.py +46 -26
- nautobot/dcim/templates/dcim/cable_connect.html +76 -3
- nautobot/dcim/templates/dcim/console_port_connection_list.html +7 -5
- nautobot/dcim/templates/dcim/device/base.html +14 -6
- nautobot/dcim/templates/dcim/device/consoleports.html +2 -3
- nautobot/dcim/templates/dcim/device/consoleserverports.html +2 -3
- nautobot/dcim/templates/dcim/device/devicebays.html +6 -7
- nautobot/dcim/templates/dcim/device/frontports.html +2 -3
- nautobot/dcim/templates/dcim/device/interfaces.html +2 -3
- nautobot/dcim/templates/dcim/device/inventory.html +2 -3
- nautobot/dcim/templates/dcim/device/modulebays.html +49 -0
- nautobot/dcim/templates/dcim/device/poweroutlets.html +2 -3
- nautobot/dcim/templates/dcim/device/powerports.html +2 -3
- nautobot/dcim/templates/dcim/device/rearports.html +2 -3
- nautobot/dcim/templates/dcim/device.html +45 -1
- nautobot/dcim/templates/dcim/device_component.html +13 -5
- nautobot/dcim/templates/dcim/device_list.html +2 -1
- nautobot/dcim/templates/dcim/deviceredundancygroup_retrieve.html +6 -0
- nautobot/dcim/templates/dcim/devicetype.html +99 -98
- nautobot/dcim/templates/dcim/devicetype_list.html +8 -16
- nautobot/dcim/templates/dcim/inc/devicetype_component_table.html +1 -1
- nautobot/dcim/templates/dcim/inc/moduletype_component_table.html +39 -0
- nautobot/dcim/templates/dcim/interface.html +17 -2
- nautobot/dcim/templates/dcim/interface_connection_list.html +7 -5
- nautobot/dcim/templates/dcim/interface_edit.html +1 -0
- nautobot/dcim/templates/dcim/manufacturer.html +24 -0
- nautobot/dcim/templates/dcim/module/base.html +97 -0
- nautobot/dcim/templates/dcim/module_bulk_destroy.html +5 -0
- nautobot/dcim/templates/dcim/module_consoleports.html +53 -0
- nautobot/dcim/templates/dcim/module_consoleserverports.html +53 -0
- nautobot/dcim/templates/dcim/module_destroy.html +5 -0
- nautobot/dcim/templates/dcim/module_frontports.html +53 -0
- nautobot/dcim/templates/dcim/module_interfaces.html +57 -0
- nautobot/dcim/templates/dcim/module_list.html +20 -0
- nautobot/dcim/templates/dcim/module_modulebays.html +49 -0
- nautobot/dcim/templates/dcim/module_poweroutlets.html +53 -0
- nautobot/dcim/templates/dcim/module_powerports.html +53 -0
- nautobot/dcim/templates/dcim/module_rearports.html +53 -0
- nautobot/dcim/templates/dcim/module_retrieve.html +63 -0
- nautobot/dcim/templates/dcim/module_update.html +71 -0
- nautobot/dcim/templates/dcim/modulebay_bulk_destroy.html +5 -0
- nautobot/dcim/templates/dcim/modulebay_destroy.html +8 -0
- nautobot/dcim/templates/dcim/modulebay_retrieve.html +101 -0
- nautobot/dcim/templates/dcim/moduletype_list.html +11 -0
- nautobot/dcim/templates/dcim/moduletype_retrieve.html +159 -0
- nautobot/dcim/templates/dcim/power_port_connection_list.html +7 -5
- nautobot/dcim/templates/dcim/softwareimagefile_retrieve.html +65 -19
- nautobot/dcim/tests/integration/test_cable_connect_form.py +4 -4
- nautobot/dcim/tests/test_api.py +693 -208
- nautobot/dcim/tests/test_filters.py +843 -217
- nautobot/dcim/tests/test_models.py +1103 -8
- nautobot/dcim/tests/test_views.py +1525 -343
- nautobot/dcim/urls.py +17 -2
- nautobot/dcim/utils.py +2 -3
- nautobot/dcim/views.py +1109 -113
- nautobot/extras/__init__.py +0 -1
- nautobot/extras/api/serializers.py +115 -3
- nautobot/extras/api/urls.py +12 -0
- nautobot/extras/api/views.py +73 -59
- nautobot/extras/apps.py +2 -2
- nautobot/extras/choices.py +43 -0
- nautobot/extras/context_managers.py +13 -8
- nautobot/extras/datasources/git.py +2 -0
- nautobot/extras/factory.py +460 -9
- nautobot/extras/filters/__init__.py +174 -3
- nautobot/extras/filters/mixins.py +46 -43
- nautobot/extras/forms/base.py +24 -5
- nautobot/extras/forms/forms.py +227 -8
- nautobot/extras/forms/mixins.py +93 -0
- nautobot/extras/graphql/types.py +23 -10
- nautobot/extras/homepage.py +26 -3
- nautobot/extras/jobs.py +2 -2
- nautobot/extras/management/__init__.py +1 -0
- nautobot/extras/management/commands/refresh_dynamic_group_member_caches.py +1 -16
- nautobot/extras/migrations/0021_customfield_changelog_data.py +1 -0
- nautobot/extras/migrations/0109_dynamicgroup_group_type_dynamicgroup_tags_and_more.py +108 -0
- nautobot/extras/migrations/0110_alter_configcontext_cluster_groups_and_more.py +111 -0
- nautobot/extras/migrations/0111_metadata.py +162 -0
- nautobot/extras/migrations/0112_dynamic_group_group_type_data_migration.py +28 -0
- nautobot/extras/migrations/0113_saved_views.py +77 -0
- nautobot/extras/models/__init__.py +15 -1
- nautobot/extras/models/change_logging.py +3 -3
- nautobot/extras/models/contacts.py +4 -0
- nautobot/extras/models/customfields.py +18 -3
- nautobot/extras/models/groups.py +389 -225
- nautobot/extras/models/jobs.py +87 -3
- nautobot/extras/models/metadata.py +441 -0
- nautobot/extras/models/mixins.py +72 -62
- nautobot/extras/models/models.py +118 -9
- nautobot/extras/models/relationships.py +9 -2
- nautobot/extras/models/tags.py +13 -2
- nautobot/extras/navigation.py +57 -0
- nautobot/extras/plugins/__init__.py +3 -1
- nautobot/extras/querysets.py +30 -66
- nautobot/extras/signals.py +109 -101
- nautobot/extras/tables.py +201 -17
- nautobot/extras/templates/extras/dynamicgroup.html +44 -15
- nautobot/extras/templates/extras/dynamicgroup_edit.html +2 -0
- nautobot/extras/templates/extras/job.html +1 -1
- nautobot/extras/templates/extras/job_detail.html +11 -0
- nautobot/extras/templates/extras/jobresult.html +61 -74
- nautobot/extras/templates/extras/metadatatype_create.html +89 -0
- nautobot/extras/templates/extras/metadatatype_retrieve.html +67 -0
- nautobot/extras/templates/extras/object_dynamicgroups.html +7 -0
- nautobot/extras/templates/extras/objectchange_list.html +0 -12
- nautobot/extras/templates/extras/plugins_list.html +1 -3
- nautobot/extras/templates/extras/role_retrieve.html +48 -0
- nautobot/extras/templates/extras/staticgroupassociation_retrieve.html +20 -0
- nautobot/extras/tests/integration/test_customfields.py +1 -0
- nautobot/extras/tests/test_api.py +509 -23
- nautobot/extras/tests/test_changelog.py +20 -9
- nautobot/extras/tests/test_context_managers.py +22 -15
- nautobot/extras/tests/test_datasources.py +13 -1
- nautobot/extras/tests/test_dynamicgroups.py +201 -171
- nautobot/extras/tests/test_filters.py +211 -12
- nautobot/extras/tests/test_jobs.py +6 -6
- nautobot/extras/tests/test_models.py +501 -4
- nautobot/extras/tests/test_relationships.py +1 -0
- nautobot/extras/tests/test_views.py +586 -8
- nautobot/extras/tests/test_webhooks.py +1 -1
- nautobot/extras/urls.py +5 -0
- nautobot/extras/utils.py +85 -16
- nautobot/extras/views.py +562 -122
- nautobot/ipam/__init__.py +0 -1
- nautobot/ipam/apps.py +1 -0
- nautobot/ipam/factory.py +17 -19
- nautobot/ipam/filters.py +13 -0
- nautobot/ipam/forms.py +8 -4
- nautobot/ipam/graphql/types.py +2 -2
- nautobot/ipam/migrations/0047_alter_ipaddress_role_alter_ipaddress_status_and_more.py +59 -0
- nautobot/ipam/models.py +20 -20
- nautobot/ipam/querysets.py +1 -1
- nautobot/ipam/signals.py +4 -2
- nautobot/ipam/tables.py +5 -0
- nautobot/ipam/templates/ipam/ipaddress_interfaces.html +1 -1
- nautobot/ipam/templates/ipam/ipaddress_vm_interfaces.html +1 -1
- nautobot/ipam/templates/ipam/prefix.html +1 -0
- nautobot/ipam/tests/test_api.py +37 -18
- nautobot/ipam/tests/test_filters.py +26 -2
- nautobot/ipam/tests/test_models.py +9 -2
- nautobot/ipam/tests/test_querysets.py +1 -1
- nautobot/ipam/tests/test_views.py +3 -2
- nautobot/ipam/urls.py +2 -2
- nautobot/ipam/views.py +20 -34
- nautobot/project-static/css/base.css +21 -0
- nautobot/project-static/css/dark.css +11 -0
- nautobot/project-static/docs/404.html +894 -90
- nautobot/project-static/docs/apps/index.html +894 -90
- nautobot/project-static/docs/apps/nautobot-apps.html +894 -90
- nautobot/project-static/docs/assets/_mkdocstrings.css +5 -0
- nautobot/project-static/docs/assets/stylesheets/main.3cba04c6.min.css +1 -0
- nautobot/project-static/docs/assets/stylesheets/main.3cba04c6.min.css.map +1 -0
- nautobot/project-static/docs/code-reference/nautobot/apps/__init__.html +921 -122
- nautobot/project-static/docs/code-reference/nautobot/apps/admin.html +906 -103
- nautobot/project-static/docs/code-reference/nautobot/apps/api.html +1620 -905
- nautobot/project-static/docs/code-reference/nautobot/apps/change_logging.html +937 -146
- nautobot/project-static/docs/code-reference/nautobot/apps/choices.html +979 -190
- nautobot/project-static/docs/code-reference/nautobot/apps/config.html +903 -101
- nautobot/project-static/docs/code-reference/nautobot/apps/constants.html +899 -95
- nautobot/project-static/docs/code-reference/nautobot/apps/datasources.html +993 -195
- nautobot/project-static/docs/code-reference/nautobot/apps/exceptions.html +976 -133
- nautobot/project-static/docs/code-reference/nautobot/apps/factory.html +1080 -274
- nautobot/project-static/docs/code-reference/nautobot/apps/filters.html +1244 -336
- nautobot/project-static/docs/code-reference/nautobot/apps/forms.html +1729 -877
- nautobot/project-static/docs/code-reference/nautobot/apps/graphql.html +1166 -383
- nautobot/project-static/docs/code-reference/nautobot/apps/jobs.html +2090 -1376
- nautobot/project-static/docs/code-reference/nautobot/apps/models.html +2248 -1424
- nautobot/project-static/docs/code-reference/nautobot/apps/querysets.html +914 -113
- nautobot/project-static/docs/code-reference/nautobot/apps/secrets.html +965 -165
- nautobot/project-static/docs/code-reference/nautobot/apps/tables.html +1012 -225
- nautobot/project-static/docs/code-reference/nautobot/apps/testing.html +1915 -1279
- nautobot/project-static/docs/code-reference/nautobot/apps/ui.html +1848 -1104
- nautobot/project-static/docs/code-reference/nautobot/apps/urls.html +906 -103
- nautobot/project-static/docs/code-reference/nautobot/apps/utils.html +2335 -1701
- nautobot/project-static/docs/code-reference/nautobot/apps/views.html +1804 -1026
- nautobot/project-static/docs/development/apps/api/configuration-view.html +894 -90
- nautobot/project-static/docs/development/apps/api/database-backend-config.html +894 -90
- nautobot/project-static/docs/development/apps/api/models/django-admin.html +894 -90
- nautobot/project-static/docs/development/apps/api/models/global-search.html +894 -90
- nautobot/project-static/docs/development/apps/api/models/graphql.html +894 -90
- nautobot/project-static/docs/development/apps/api/models/index.html +944 -92
- nautobot/project-static/docs/development/apps/api/nautobot-app-config.html +894 -90
- nautobot/project-static/docs/development/apps/api/platform-features/custom-validators.html +894 -90
- nautobot/project-static/docs/development/apps/api/platform-features/filter-extensions.html +894 -90
- nautobot/project-static/docs/development/apps/api/platform-features/git-repository-content.html +894 -90
- nautobot/project-static/docs/development/apps/api/platform-features/index.html +894 -90
- nautobot/project-static/docs/development/apps/api/platform-features/jinja2-filters.html +894 -90
- nautobot/project-static/docs/development/apps/api/platform-features/jobs.html +894 -90
- nautobot/project-static/docs/development/apps/api/platform-features/populating-extensibility-features.html +894 -90
- nautobot/project-static/docs/development/apps/api/platform-features/secrets-providers.html +894 -90
- nautobot/project-static/docs/development/apps/api/platform-features/uniquely-identify-objects.html +894 -90
- nautobot/project-static/docs/development/apps/api/prometheus.html +894 -90
- nautobot/project-static/docs/development/apps/api/setup.html +894 -90
- nautobot/project-static/docs/development/apps/api/testing.html +894 -90
- nautobot/project-static/docs/development/apps/api/ui-extensions/banners.html +894 -90
- nautobot/project-static/docs/development/apps/api/ui-extensions/home-page.html +894 -90
- nautobot/project-static/docs/development/apps/api/ui-extensions/index.html +894 -90
- nautobot/project-static/docs/development/apps/api/ui-extensions/navigation.html +894 -90
- nautobot/project-static/docs/development/apps/api/ui-extensions/object-views.html +894 -90
- nautobot/project-static/docs/development/apps/api/views/base-template.html +894 -90
- nautobot/project-static/docs/development/apps/api/views/core-view-overrides.html +894 -90
- nautobot/project-static/docs/development/apps/api/views/django-generic-views.html +894 -90
- nautobot/project-static/docs/development/apps/api/views/help-documentation.html +894 -90
- nautobot/project-static/docs/development/apps/api/views/index.html +894 -90
- nautobot/project-static/docs/development/apps/api/views/nautobot-generic-views.html +894 -90
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewset.html +894 -90
- nautobot/project-static/docs/development/apps/api/views/nautobotuiviewsetrouter.html +894 -90
- nautobot/project-static/docs/development/apps/api/views/notes.html +894 -90
- nautobot/project-static/docs/development/apps/api/views/rest-api.html +894 -90
- nautobot/project-static/docs/development/apps/api/views/urls.html +894 -90
- nautobot/project-static/docs/development/apps/index.html +894 -90
- nautobot/project-static/docs/development/apps/migration/code-updates.html +894 -90
- nautobot/project-static/docs/development/apps/migration/dependency-updates.html +894 -90
- nautobot/project-static/docs/development/apps/migration/from-v1.html +894 -90
- nautobot/project-static/docs/development/apps/migration/model-updates/dcim.html +894 -90
- nautobot/project-static/docs/development/apps/migration/model-updates/extras.html +894 -90
- nautobot/project-static/docs/development/apps/migration/model-updates/global.html +894 -90
- nautobot/project-static/docs/development/apps/migration/model-updates/ipam.html +894 -90
- nautobot/project-static/docs/development/apps/porting-from-netbox.html +894 -90
- nautobot/project-static/docs/development/core/application-registry.html +894 -90
- nautobot/project-static/docs/development/core/best-practices.html +895 -90
- nautobot/project-static/docs/development/core/bootstrap-ui.html +894 -90
- nautobot/project-static/docs/development/core/caching.html +894 -90
- nautobot/project-static/docs/development/core/controllers.html +894 -90
- nautobot/project-static/docs/development/core/docker-compose-advanced-use-cases.html +894 -90
- nautobot/project-static/docs/development/core/generic-views.html +894 -90
- nautobot/project-static/docs/development/core/getting-started.html +894 -90
- nautobot/project-static/docs/development/core/homepage.html +894 -90
- nautobot/project-static/docs/development/core/index.html +905 -90
- nautobot/project-static/docs/development/core/model-checklist.html +903 -91
- nautobot/project-static/docs/development/core/model-features.html +894 -90
- nautobot/project-static/docs/development/core/natural-keys.html +894 -90
- nautobot/project-static/docs/development/core/navigation-menu.html +894 -90
- nautobot/project-static/docs/development/core/release-checklist.html +897 -93
- nautobot/project-static/docs/development/core/role-internals.html +894 -90
- nautobot/project-static/docs/development/core/settings.html +894 -90
- nautobot/project-static/docs/development/core/style-guide.html +895 -91
- nautobot/project-static/docs/development/core/templates.html +906 -91
- nautobot/project-static/docs/development/core/testing.html +894 -90
- nautobot/project-static/docs/development/core/user-preferences.html +894 -90
- nautobot/project-static/docs/development/index.html +894 -90
- nautobot/project-static/docs/development/jobs/index.html +1271 -453
- nautobot/project-static/docs/development/jobs/migration/from-v1.html +894 -90
- nautobot/project-static/docs/index.html +9032 -13
- nautobot/project-static/docs/media/models/cloud_aws_direct_connect_dark.png +0 -0
- nautobot/project-static/docs/media/models/cloud_aws_direct_connect_light.png +0 -0
- nautobot/project-static/docs/models/cloud/cloudaccount.html +15 -0
- nautobot/project-static/docs/models/cloud/cloudnetwork.html +15 -0
- nautobot/project-static/docs/models/cloud/cloudnetworkprefixassignment.html +15 -0
- nautobot/project-static/docs/models/cloud/cloudresourcetype.html +15 -0
- nautobot/project-static/docs/models/cloud/cloudservice.html +15 -0
- nautobot/project-static/docs/models/cloud/cloudservicenetworkassignment.html +15 -0
- nautobot/project-static/docs/models/dcim/module.html +15 -0
- nautobot/project-static/docs/models/dcim/modulebay.html +15 -0
- nautobot/project-static/docs/models/dcim/modulebaytemplate.html +15 -0
- nautobot/project-static/docs/models/dcim/moduletype.html +15 -0
- nautobot/project-static/docs/models/extras/metadatachoice.html +15 -0
- nautobot/project-static/docs/models/extras/metadatatype.html +15 -0
- nautobot/project-static/docs/models/extras/objectmetadata.html +15 -0
- nautobot/project-static/docs/models/extras/role.html +15 -0
- nautobot/project-static/docs/models/extras/savedview.html +15 -0
- nautobot/project-static/docs/models/extras/staticgroupassociation.html +15 -0
- nautobot/project-static/docs/models/extras/status.html +15 -0
- nautobot/project-static/docs/objects.inv +0 -0
- nautobot/project-static/docs/overview/application_stack.html +902 -91
- nautobot/project-static/docs/overview/design_philosophy.html +896 -92
- nautobot/project-static/docs/overview/index.html +13 -8228
- nautobot/project-static/docs/release-notes/index.html +1131 -94
- nautobot/project-static/docs/release-notes/version-1.0.html +894 -90
- nautobot/project-static/docs/release-notes/version-1.1.html +894 -90
- nautobot/project-static/docs/release-notes/version-1.2.html +894 -90
- nautobot/project-static/docs/release-notes/version-1.3.html +894 -90
- nautobot/project-static/docs/release-notes/version-1.4.html +894 -90
- nautobot/project-static/docs/release-notes/version-1.5.html +895 -91
- nautobot/project-static/docs/release-notes/version-1.6.html +895 -91
- nautobot/project-static/docs/release-notes/version-2.0.html +894 -90
- nautobot/project-static/docs/release-notes/version-2.1.html +894 -90
- nautobot/project-static/docs/release-notes/version-2.2.html +1137 -196
- nautobot/project-static/docs/release-notes/version-2.3.html +9954 -0
- nautobot/project-static/docs/requirements.txt +5 -5
- nautobot/project-static/docs/search/search_index.json +1 -1
- nautobot/project-static/docs/sitemap.xml +335 -260
- nautobot/project-static/docs/sitemap.xml.gz +0 -0
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/ldap.html +894 -90
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/remote.html +894 -90
- nautobot/project-static/docs/user-guide/administration/configuration/authentication/sso.html +894 -90
- nautobot/project-static/docs/user-guide/administration/configuration/index.html +894 -90
- nautobot/project-static/docs/user-guide/administration/configuration/optional-settings.html +1025 -175
- nautobot/project-static/docs/user-guide/administration/configuration/required-settings.html +894 -90
- nautobot/project-static/docs/user-guide/administration/configuration/time-zones.html +894 -90
- nautobot/project-static/docs/user-guide/administration/guides/caching.html +894 -90
- nautobot/project-static/docs/user-guide/administration/guides/celery-queues.html +902 -90
- nautobot/project-static/docs/user-guide/administration/guides/healthcheck.html +894 -90
- nautobot/project-static/docs/user-guide/administration/guides/permissions.html +894 -90
- nautobot/project-static/docs/user-guide/administration/guides/prometheus-metrics.html +894 -90
- nautobot/project-static/docs/user-guide/administration/guides/replicating-nautobot.html +894 -90
- nautobot/project-static/docs/user-guide/administration/guides/request-profiling.html +894 -90
- nautobot/project-static/docs/user-guide/administration/guides/s3-django-storage.html +894 -90
- nautobot/project-static/docs/user-guide/administration/installation/app-install.html +894 -90
- nautobot/project-static/docs/user-guide/administration/installation/external-authentication.html +894 -90
- nautobot/project-static/docs/user-guide/administration/installation/http-server.html +946 -155
- nautobot/project-static/docs/user-guide/administration/installation/index.html +903 -95
- nautobot/project-static/docs/user-guide/administration/installation/install_system.html +936 -124
- nautobot/project-static/docs/user-guide/administration/installation/nautobot.html +956 -159
- nautobot/project-static/docs/user-guide/administration/installation/services.html +915 -114
- nautobot/project-static/docs/user-guide/administration/installation-extras/docker.html +910 -101
- nautobot/project-static/docs/user-guide/administration/installation-extras/health-checks.html +894 -90
- nautobot/project-static/docs/user-guide/administration/installation-extras/selinux-troubleshooting.html +894 -90
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-netbox.html +894 -90
- nautobot/project-static/docs/user-guide/administration/migration/migrating-from-postgresql.html +894 -90
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-server.html +977 -121
- nautobot/project-static/docs/user-guide/administration/tools/nautobot-shell.html +894 -90
- nautobot/project-static/docs/user-guide/administration/upgrading/database-backup.html +894 -90
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/after-you-upgrade.html +894 -90
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/before-you-upgrade.html +894 -90
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/for-developers.html +894 -90
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/index.html +894 -90
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/ipam/whats-changed.html +894 -90
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/region-and-site-data-migration-guide.html +894 -90
- nautobot/project-static/docs/user-guide/administration/upgrading/from-v1/upgrading-from-nautobot-v1.html +894 -90
- nautobot/project-static/docs/user-guide/administration/upgrading/upgrading.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuit.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittermination.html +895 -91
- nautobot/project-static/docs/user-guide/core-data-model/circuits/circuittype.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/circuits/provider.html +898 -90
- nautobot/project-static/docs/user-guide/core-data-model/circuits/providernetwork.html +897 -93
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloud.html +8984 -0
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudaccount.html +8828 -0
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetwork.html +8829 -0
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudnetworkprefixassignment.html +8828 -0
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudresourcetype.html +8829 -0
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservice.html +8833 -0
- nautobot/project-static/docs/user-guide/core-data-model/cloud/cloudservicenetworkassignment.html +8828 -0
- nautobot/project-static/docs/user-guide/core-data-model/dcim/cable.html +908 -104
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleport.html +925 -107
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleporttemplate.html +925 -107
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverport.html +920 -102
- nautobot/project-static/docs/user-guide/core-data-model/dcim/consoleserverporttemplate.html +925 -107
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controller.html +908 -104
- nautobot/project-static/docs/user-guide/core-data-model/dcim/controllermanageddevicegroup.html +908 -104
- nautobot/project-static/docs/user-guide/core-data-model/dcim/device.html +915 -107
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebay.html +922 -118
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicebaytemplate.html +923 -119
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicefamily.html +920 -116
- nautobot/project-static/docs/user-guide/core-data-model/dcim/deviceredundancygroup.html +908 -104
- nautobot/project-static/docs/user-guide/core-data-model/dcim/devicetype.html +916 -107
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontport.html +928 -110
- nautobot/project-static/docs/user-guide/core-data-model/dcim/frontporttemplate.html +938 -120
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interface.html +930 -108
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfaceredundancygroup.html +908 -104
- nautobot/project-static/docs/user-guide/core-data-model/dcim/interfacetemplate.html +939 -121
- nautobot/project-static/docs/user-guide/core-data-model/dcim/inventoryitem.html +930 -112
- nautobot/project-static/docs/user-guide/core-data-model/dcim/location.html +920 -116
- nautobot/project-static/docs/user-guide/core-data-model/dcim/locationtype.html +923 -119
- nautobot/project-static/docs/user-guide/core-data-model/dcim/manufacturer.html +925 -117
- nautobot/project-static/docs/user-guide/core-data-model/dcim/module.html +8828 -0
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebay.html +8846 -0
- nautobot/project-static/docs/user-guide/core-data-model/dcim/modulebaytemplate.html +8843 -0
- nautobot/project-static/docs/user-guide/core-data-model/dcim/moduletype.html +8823 -0
- nautobot/project-static/docs/user-guide/core-data-model/dcim/platform.html +918 -114
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerfeed.html +908 -104
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlet.html +942 -85
- nautobot/project-static/docs/user-guide/core-data-model/dcim/poweroutlettemplate.html +926 -108
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerpanel.html +908 -104
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerport.html +945 -88
- nautobot/project-static/docs/user-guide/core-data-model/dcim/powerporttemplate.html +923 -105
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rack.html +931 -127
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackgroup.html +920 -116
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rackreservation.html +908 -104
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearport.html +924 -106
- nautobot/project-static/docs/user-guide/core-data-model/dcim/rearporttemplate.html +926 -108
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareimagefile.html +908 -104
- nautobot/project-static/docs/user-guide/core-data-model/dcim/softwareversion.html +908 -104
- nautobot/project-static/docs/user-guide/core-data-model/dcim/virtualchassis.html +908 -104
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontext.html +938 -90
- nautobot/project-static/docs/user-guide/core-data-model/extras/configcontextschema.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/extras/contact.html +899 -91
- nautobot/project-static/docs/user-guide/core-data-model/extras/team.html +899 -91
- nautobot/project-static/docs/user-guide/core-data-model/ipam/ipaddress.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/ipam/namespace.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/ipam/prefix.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/ipam/rir.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/ipam/routetarget.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/ipam/service.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlan.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vlangroup.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/ipam/vrf.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/overview/introduction.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenant.html +903 -98
- nautobot/project-static/docs/user-guide/core-data-model/tenancy/tenantgroup.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/cluster.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustergroup.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/clustertype.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/virtualmachine.html +894 -90
- nautobot/project-static/docs/user-guide/core-data-model/virtualization/vminterface.html +899 -91
- nautobot/project-static/docs/user-guide/feature-guides/contacts-and-teams.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/custom-fields.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-devices.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/creating-location-types-and-locations.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/index.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/interfaces.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/ipam.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/platforms.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/search-bar.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/tenants.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/getting-started/vlans-and-vlan-groups.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/git-data-source.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/graphql.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/clear-view-button.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/cleared-view.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/config-table-columns-to-locations.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/configure-button.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/create-saved-view-success.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/current-saved-view-drop-down-menu.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/default-location-list-view.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/dropdown-button-after-new-saved-view.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/filter-application-to-locations.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/filter-button.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/global-default-location-list-view.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/location-list-view-with-saved-views.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/navigation-menu.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/save-as-new-view-drop-down.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/save-view-modal.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-buttons.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-success.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-view-unchecked.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-admin-edit-view.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-different-user.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/saved-view-modal-unchecked.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/set-as-my-default-button.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/set-as-my-default-success.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/unsaved-saved-view.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/images/saved-views/updated-saved-view.png +0 -0
- nautobot/project-static/docs/user-guide/feature-guides/ip-address-merge-tool.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/relationships.html +894 -90
- nautobot/project-static/docs/user-guide/feature-guides/software-image-files-and-versions.html +894 -90
- nautobot/project-static/docs/user-guide/index.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/change-logging.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/computedfield.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/customfield.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/customlink.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/dynamicgroup.html +1260 -787
- nautobot/project-static/docs/user-guide/platform-functionality/exporttemplate.html +897 -93
- nautobot/project-static/docs/user-guide/platform-functionality/externalintegration.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/gitrepository.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/graphql.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/graphqlquery.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/imageattachment.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/index.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/job-scheduling-and-approvals.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobbutton.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/jobhook.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/jobs/models.html +898 -90
- nautobot/project-static/docs/user-guide/platform-functionality/napalm.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/note.html +897 -93
- nautobot/project-static/docs/user-guide/platform-functionality/objectmetadata.html +9061 -0
- nautobot/project-static/docs/user-guide/platform-functionality/relationship.html +897 -93
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/authentication.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/filtering.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/overview.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/rest-api/ui-related-endpoints.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/role.html +897 -93
- nautobot/project-static/docs/user-guide/platform-functionality/savedview.html +9137 -0
- nautobot/project-static/docs/user-guide/platform-functionality/secret.html +897 -93
- nautobot/project-static/docs/user-guide/platform-functionality/staticgroupassociation.html +8933 -0
- nautobot/project-static/docs/user-guide/platform-functionality/status.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/tag.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/template-filters.html +952 -123
- nautobot/project-static/docs/user-guide/platform-functionality/users/objectpermission.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/users/token.html +894 -90
- nautobot/project-static/docs/user-guide/platform-functionality/webhook.html +894 -90
- nautobot/project-static/js/forms.js +71 -0
- nautobot/project-static/js/table_sorting_indicator.js +46 -0
- nautobot/project-static/js/tableconfig.js +6 -1
- nautobot/project-static/materialdesignicons-7.4.47/css/materialdesignicons.min.css +3 -0
- nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/fonts/materialdesignicons-webfont.eot +0 -0
- nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/fonts/materialdesignicons-webfont.ttf +0 -0
- nautobot/project-static/materialdesignicons-7.4.47/fonts/materialdesignicons-webfont.woff +0 -0
- nautobot/project-static/materialdesignicons-7.4.47/fonts/materialdesignicons-webfont.woff2 +0 -0
- nautobot/tenancy/__init__.py +0 -1
- nautobot/tenancy/apps.py +1 -0
- nautobot/tenancy/factory.py +3 -2
- nautobot/tenancy/filters/__init__.py +1 -0
- nautobot/tenancy/forms.py +1 -1
- nautobot/tenancy/templates/tenancy/tenant.html +24 -20
- nautobot/tenancy/views.py +11 -10
- nautobot/users/__init__.py +0 -1
- nautobot/users/api/serializers.py +1 -1
- nautobot/users/api/views.py +4 -2
- nautobot/users/apps.py +3 -2
- nautobot/users/factory.py +3 -3
- nautobot/users/migrations/0010_user_default_saved_views.py +20 -0
- nautobot/users/models.py +12 -0
- nautobot/users/tests/test_filters.py +6 -3
- nautobot/users/urls.py +8 -0
- nautobot/virtualization/__init__.py +0 -1
- nautobot/virtualization/apps.py +1 -0
- nautobot/virtualization/filters.py +6 -1
- nautobot/virtualization/forms.py +11 -3
- nautobot/virtualization/graphql/types.py +2 -2
- nautobot/virtualization/migrations/0029_add_role_field_to_interface_models.py +27 -0
- nautobot/virtualization/migrations/0030_alter_virtualmachine_local_config_context_data_owner_content_type_and_more.py +67 -0
- nautobot/virtualization/models.py +0 -2
- nautobot/virtualization/tables.py +12 -8
- nautobot/virtualization/templates/virtualization/virtualmachine.html +1 -1
- nautobot/virtualization/templates/virtualization/vminterface.html +7 -1
- nautobot/virtualization/templates/virtualization/vminterface_edit.html +1 -0
- nautobot/virtualization/tests/test_api.py +9 -4
- nautobot/virtualization/tests/test_filters.py +22 -0
- nautobot/virtualization/tests/test_models.py +7 -3
- nautobot/virtualization/tests/test_views.py +19 -3
- nautobot/virtualization/urls.py +2 -2
- nautobot/virtualization/views.py +10 -32
- {nautobot-2.2.8.dist-info → nautobot-2.3.0.dist-info}/METADATA +21 -19
- {nautobot-2.2.8.dist-info → nautobot-2.3.0.dist-info}/RECORD +684 -564
- nautobot/project-static/docs/assets/stylesheets/main.76a95c52.min.css +0 -1
- nautobot/project-static/docs/assets/stylesheets/main.76a95c52.min.css.map +0 -1
- nautobot/project-static/materialdesignicons-6.5.95/.github/ISSUE_TEMPLATE.md +0 -3
- nautobot/project-static/materialdesignicons-6.5.95/README.md +0 -25
- nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.css +0 -26654
- nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.css.map +0 -16
- nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.min.css +0 -3
- nautobot/project-static/materialdesignicons-6.5.95/css/materialdesignicons.min.css.map +0 -16
- nautobot/project-static/materialdesignicons-6.5.95/fonts/materialdesignicons-webfont.woff +0 -0
- nautobot/project-static/materialdesignicons-6.5.95/fonts/materialdesignicons-webfont.woff2 +0 -0
- nautobot/project-static/materialdesignicons-6.5.95/package.json +0 -28
- nautobot/project-static/materialdesignicons-6.5.95/preview.html +0 -717
- nautobot/project-static/materialdesignicons-6.5.95/scss/_animated.scss +0 -27
- nautobot/project-static/materialdesignicons-6.5.95/scss/_core.scss +0 -10
- nautobot/project-static/materialdesignicons-6.5.95/scss/_extras.scss +0 -65
- nautobot/project-static/materialdesignicons-6.5.95/scss/_functions.scss +0 -20
- nautobot/project-static/materialdesignicons-6.5.95/scss/_icons.scss +0 -10
- nautobot/project-static/materialdesignicons-6.5.95/scss/_path.scss +0 -10
- nautobot/project-static/materialdesignicons-6.5.95/scss/_variables.scss +0 -6606
- nautobot/project-static/materialdesignicons-6.5.95/scss/materialdesignicons.scss +0 -8
- /nautobot/project-static/{materialdesignicons-6.5.95 → materialdesignicons-7.4.47}/LICENSE +0 -0
- {nautobot-2.2.8.dist-info → nautobot-2.3.0.dist-info}/LICENSE.txt +0 -0
- {nautobot-2.2.8.dist-info → nautobot-2.3.0.dist-info}/NOTICE +0 -0
- {nautobot-2.2.8.dist-info → nautobot-2.3.0.dist-info}/WHEEL +0 -0
- {nautobot-2.2.8.dist-info → nautobot-2.3.0.dist-info}/entry_points.txt +0 -0
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
<link rel="prev" href="customlink.html">
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
<link rel="next" href="
|
|
17
|
+
<link rel="next" href="staticgroupassociation.html">
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
<link rel="icon" href="../../assets/favicon.ico">
|
|
21
|
-
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.
|
|
21
|
+
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.31">
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
<link rel="stylesheet" href="../../assets/stylesheets/main.
|
|
29
|
+
<link rel="stylesheet" href="../../assets/stylesheets/main.3cba04c6.min.css">
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
<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.
|
|
41
|
+
<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 0h-32zm-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.1z"/></svg>');}</style>
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
<a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
|
|
218
218
|
<div class="md-source__icon md-icon">
|
|
219
219
|
|
|
220
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.
|
|
220
|
+
<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.81z"/></svg>
|
|
221
221
|
</div>
|
|
222
222
|
<div class="md-source__repository">
|
|
223
223
|
GitHub
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
|
|
239
239
|
|
|
240
240
|
<li class="md-tabs__item">
|
|
241
|
-
<a href="../../
|
|
241
|
+
<a href="../../index.html" class="md-tabs__link">
|
|
242
242
|
|
|
243
243
|
|
|
244
244
|
|
|
@@ -377,7 +377,7 @@
|
|
|
377
377
|
<a href="https://github.com/nautobot/nautobot" title="Go to repository" class="md-source" data-md-component="source">
|
|
378
378
|
<div class="md-source__icon md-icon">
|
|
379
379
|
|
|
380
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.
|
|
380
|
+
<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.81z"/></svg>
|
|
381
381
|
</div>
|
|
382
382
|
<div class="md-source__repository">
|
|
383
383
|
GitHub
|
|
@@ -409,7 +409,7 @@
|
|
|
409
409
|
|
|
410
410
|
|
|
411
411
|
<div class="md-nav__link md-nav__container">
|
|
412
|
-
<a href="../../
|
|
412
|
+
<a href="../../index.html" class="md-nav__link ">
|
|
413
413
|
|
|
414
414
|
|
|
415
415
|
<span class="md-ellipsis">
|
|
@@ -2489,21 +2489,29 @@
|
|
|
2489
2489
|
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_3" >
|
|
2490
2490
|
|
|
2491
2491
|
|
|
2492
|
-
|
|
2493
|
-
|
|
2492
|
+
|
|
2493
|
+
<div class="md-nav__link md-nav__container">
|
|
2494
|
+
<a href="../core-data-model/cloud/cloud.html" class="md-nav__link ">
|
|
2495
|
+
|
|
2494
2496
|
|
|
2495
2497
|
<span class="md-ellipsis">
|
|
2496
|
-
|
|
2498
|
+
Cloud
|
|
2497
2499
|
</span>
|
|
2498
2500
|
|
|
2499
2501
|
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
+
</a>
|
|
2503
|
+
|
|
2504
|
+
|
|
2505
|
+
<label class="md-nav__link " for="__nav_2_3_3" id="__nav_2_3_3_label" tabindex="0">
|
|
2506
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2507
|
+
</label>
|
|
2508
|
+
|
|
2509
|
+
</div>
|
|
2502
2510
|
|
|
2503
2511
|
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_3_label" aria-expanded="false">
|
|
2504
2512
|
<label class="md-nav__title" for="__nav_2_3_3">
|
|
2505
2513
|
<span class="md-nav__icon md-icon"></span>
|
|
2506
|
-
|
|
2514
|
+
Cloud
|
|
2507
2515
|
</label>
|
|
2508
2516
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
2509
2517
|
|
|
@@ -2514,11 +2522,11 @@
|
|
|
2514
2522
|
|
|
2515
2523
|
|
|
2516
2524
|
<li class="md-nav__item">
|
|
2517
|
-
<a href="../core-data-model/
|
|
2525
|
+
<a href="../core-data-model/cloud/cloudaccount.html" class="md-nav__link">
|
|
2518
2526
|
|
|
2519
2527
|
|
|
2520
2528
|
<span class="md-ellipsis">
|
|
2521
|
-
|
|
2529
|
+
Cloud Account
|
|
2522
2530
|
</span>
|
|
2523
2531
|
|
|
2524
2532
|
|
|
@@ -2535,11 +2543,11 @@
|
|
|
2535
2543
|
|
|
2536
2544
|
|
|
2537
2545
|
<li class="md-nav__item">
|
|
2538
|
-
<a href="../core-data-model/
|
|
2546
|
+
<a href="../core-data-model/cloud/cloudnetwork.html" class="md-nav__link">
|
|
2539
2547
|
|
|
2540
2548
|
|
|
2541
2549
|
<span class="md-ellipsis">
|
|
2542
|
-
|
|
2550
|
+
Cloud Network
|
|
2543
2551
|
</span>
|
|
2544
2552
|
|
|
2545
2553
|
|
|
@@ -2556,11 +2564,11 @@
|
|
|
2556
2564
|
|
|
2557
2565
|
|
|
2558
2566
|
<li class="md-nav__item">
|
|
2559
|
-
<a href="../core-data-model/
|
|
2567
|
+
<a href="../core-data-model/cloud/cloudnetworkprefixassignment.html" class="md-nav__link">
|
|
2560
2568
|
|
|
2561
2569
|
|
|
2562
2570
|
<span class="md-ellipsis">
|
|
2563
|
-
|
|
2571
|
+
Cloud Network Prefix Assignment
|
|
2564
2572
|
</span>
|
|
2565
2573
|
|
|
2566
2574
|
|
|
@@ -2577,11 +2585,11 @@
|
|
|
2577
2585
|
|
|
2578
2586
|
|
|
2579
2587
|
<li class="md-nav__item">
|
|
2580
|
-
<a href="../core-data-model/
|
|
2588
|
+
<a href="../core-data-model/cloud/cloudresourcetype.html" class="md-nav__link">
|
|
2581
2589
|
|
|
2582
2590
|
|
|
2583
2591
|
<span class="md-ellipsis">
|
|
2584
|
-
|
|
2592
|
+
Cloud Resource Type
|
|
2585
2593
|
</span>
|
|
2586
2594
|
|
|
2587
2595
|
|
|
@@ -2598,11 +2606,11 @@
|
|
|
2598
2606
|
|
|
2599
2607
|
|
|
2600
2608
|
<li class="md-nav__item">
|
|
2601
|
-
<a href="../core-data-model/
|
|
2609
|
+
<a href="../core-data-model/cloud/cloudservice.html" class="md-nav__link">
|
|
2602
2610
|
|
|
2603
2611
|
|
|
2604
2612
|
<span class="md-ellipsis">
|
|
2605
|
-
|
|
2613
|
+
Cloud Service
|
|
2606
2614
|
</span>
|
|
2607
2615
|
|
|
2608
2616
|
|
|
@@ -2619,11 +2627,11 @@
|
|
|
2619
2627
|
|
|
2620
2628
|
|
|
2621
2629
|
<li class="md-nav__item">
|
|
2622
|
-
<a href="../core-data-model/
|
|
2630
|
+
<a href="../core-data-model/cloud/cloudservicenetworkassignment.html" class="md-nav__link">
|
|
2623
2631
|
|
|
2624
2632
|
|
|
2625
2633
|
<span class="md-ellipsis">
|
|
2626
|
-
|
|
2634
|
+
Cloud Service Network Assignment
|
|
2627
2635
|
</span>
|
|
2628
2636
|
|
|
2629
2637
|
|
|
@@ -2633,22 +2641,9 @@
|
|
|
2633
2641
|
|
|
2634
2642
|
|
|
2635
2643
|
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
<li class="md-nav__item">
|
|
2643
|
-
<a href="../core-data-model/dcim/platform.html" class="md-nav__link">
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
<span class="md-ellipsis">
|
|
2647
|
-
Platform
|
|
2648
|
-
</span>
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
</a>
|
|
2644
|
+
</ul>
|
|
2645
|
+
</nav>
|
|
2646
|
+
|
|
2652
2647
|
</li>
|
|
2653
2648
|
|
|
2654
2649
|
|
|
@@ -2671,32 +2666,24 @@
|
|
|
2671
2666
|
|
|
2672
2667
|
|
|
2673
2668
|
|
|
2674
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
2669
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4" >
|
|
2675
2670
|
|
|
2676
2671
|
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
<a href="../core-data-model/dcim/devicetype.html" class="md-nav__link ">
|
|
2680
|
-
|
|
2672
|
+
<label class="md-nav__link" for="__nav_2_3_4" id="__nav_2_3_4_label" tabindex="0">
|
|
2673
|
+
|
|
2681
2674
|
|
|
2682
2675
|
<span class="md-ellipsis">
|
|
2683
|
-
|
|
2676
|
+
DCIM
|
|
2684
2677
|
</span>
|
|
2685
2678
|
|
|
2686
2679
|
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
<label class="md-nav__link " for="__nav_2_3_3_8" id="__nav_2_3_3_8_label" tabindex="0">
|
|
2691
|
-
<span class="md-nav__icon md-icon"></span>
|
|
2692
|
-
</label>
|
|
2693
|
-
|
|
2694
|
-
</div>
|
|
2680
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2681
|
+
</label>
|
|
2695
2682
|
|
|
2696
|
-
<nav class="md-nav" data-md-level="
|
|
2697
|
-
<label class="md-nav__title" for="
|
|
2683
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_4_label" aria-expanded="false">
|
|
2684
|
+
<label class="md-nav__title" for="__nav_2_3_4">
|
|
2698
2685
|
<span class="md-nav__icon md-icon"></span>
|
|
2699
|
-
|
|
2686
|
+
DCIM
|
|
2700
2687
|
</label>
|
|
2701
2688
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
2702
2689
|
|
|
@@ -2707,32 +2694,11 @@
|
|
|
2707
2694
|
|
|
2708
2695
|
|
|
2709
2696
|
<li class="md-nav__item">
|
|
2710
|
-
<a href="../core-data-model/dcim/
|
|
2711
|
-
|
|
2712
|
-
|
|
2713
|
-
<span class="md-ellipsis">
|
|
2714
|
-
Console Port Template
|
|
2715
|
-
</span>
|
|
2716
|
-
|
|
2717
|
-
|
|
2718
|
-
</a>
|
|
2719
|
-
</li>
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
<li class="md-nav__item">
|
|
2731
|
-
<a href="../core-data-model/dcim/consoleserverporttemplate.html" class="md-nav__link">
|
|
2697
|
+
<a href="../core-data-model/dcim/locationtype.html" class="md-nav__link">
|
|
2732
2698
|
|
|
2733
2699
|
|
|
2734
2700
|
<span class="md-ellipsis">
|
|
2735
|
-
|
|
2701
|
+
Location Type
|
|
2736
2702
|
</span>
|
|
2737
2703
|
|
|
2738
2704
|
|
|
@@ -2749,11 +2715,11 @@
|
|
|
2749
2715
|
|
|
2750
2716
|
|
|
2751
2717
|
<li class="md-nav__item">
|
|
2752
|
-
<a href="../core-data-model/dcim/
|
|
2718
|
+
<a href="../core-data-model/dcim/location.html" class="md-nav__link">
|
|
2753
2719
|
|
|
2754
2720
|
|
|
2755
2721
|
<span class="md-ellipsis">
|
|
2756
|
-
|
|
2722
|
+
Location
|
|
2757
2723
|
</span>
|
|
2758
2724
|
|
|
2759
2725
|
|
|
@@ -2770,11 +2736,11 @@
|
|
|
2770
2736
|
|
|
2771
2737
|
|
|
2772
2738
|
<li class="md-nav__item">
|
|
2773
|
-
<a href="../core-data-model/dcim/
|
|
2739
|
+
<a href="../core-data-model/dcim/rackgroup.html" class="md-nav__link">
|
|
2774
2740
|
|
|
2775
2741
|
|
|
2776
2742
|
<span class="md-ellipsis">
|
|
2777
|
-
|
|
2743
|
+
Rack Group
|
|
2778
2744
|
</span>
|
|
2779
2745
|
|
|
2780
2746
|
|
|
@@ -2791,11 +2757,11 @@
|
|
|
2791
2757
|
|
|
2792
2758
|
|
|
2793
2759
|
<li class="md-nav__item">
|
|
2794
|
-
<a href="../core-data-model/dcim/
|
|
2760
|
+
<a href="../core-data-model/dcim/rack.html" class="md-nav__link">
|
|
2795
2761
|
|
|
2796
2762
|
|
|
2797
2763
|
<span class="md-ellipsis">
|
|
2798
|
-
|
|
2764
|
+
Rack
|
|
2799
2765
|
</span>
|
|
2800
2766
|
|
|
2801
2767
|
|
|
@@ -2812,11 +2778,11 @@
|
|
|
2812
2778
|
|
|
2813
2779
|
|
|
2814
2780
|
<li class="md-nav__item">
|
|
2815
|
-
<a href="../core-data-model/dcim/
|
|
2781
|
+
<a href="../core-data-model/dcim/manufacturer.html" class="md-nav__link">
|
|
2816
2782
|
|
|
2817
2783
|
|
|
2818
2784
|
<span class="md-ellipsis">
|
|
2819
|
-
|
|
2785
|
+
Manufacturer
|
|
2820
2786
|
</span>
|
|
2821
2787
|
|
|
2822
2788
|
|
|
@@ -2833,11 +2799,11 @@
|
|
|
2833
2799
|
|
|
2834
2800
|
|
|
2835
2801
|
<li class="md-nav__item">
|
|
2836
|
-
<a href="../core-data-model/dcim/
|
|
2802
|
+
<a href="../core-data-model/dcim/devicefamily.html" class="md-nav__link">
|
|
2837
2803
|
|
|
2838
2804
|
|
|
2839
2805
|
<span class="md-ellipsis">
|
|
2840
|
-
|
|
2806
|
+
Device Family
|
|
2841
2807
|
</span>
|
|
2842
2808
|
|
|
2843
2809
|
|
|
@@ -2854,11 +2820,11 @@
|
|
|
2854
2820
|
|
|
2855
2821
|
|
|
2856
2822
|
<li class="md-nav__item">
|
|
2857
|
-
<a href="../core-data-model/dcim/
|
|
2823
|
+
<a href="../core-data-model/dcim/platform.html" class="md-nav__link">
|
|
2858
2824
|
|
|
2859
2825
|
|
|
2860
2826
|
<span class="md-ellipsis">
|
|
2861
|
-
|
|
2827
|
+
Platform
|
|
2862
2828
|
</span>
|
|
2863
2829
|
|
|
2864
2830
|
|
|
@@ -2868,14 +2834,6 @@
|
|
|
2868
2834
|
|
|
2869
2835
|
|
|
2870
2836
|
|
|
2871
|
-
</ul>
|
|
2872
|
-
</nav>
|
|
2873
|
-
|
|
2874
|
-
</li>
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
2837
|
|
|
2880
2838
|
|
|
2881
2839
|
|
|
@@ -2893,32 +2851,32 @@
|
|
|
2893
2851
|
|
|
2894
2852
|
|
|
2895
2853
|
|
|
2896
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
2854
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_8" >
|
|
2897
2855
|
|
|
2898
2856
|
|
|
2899
2857
|
|
|
2900
2858
|
<div class="md-nav__link md-nav__container">
|
|
2901
|
-
<a href="../core-data-model/dcim/
|
|
2859
|
+
<a href="../core-data-model/dcim/devicetype.html" class="md-nav__link ">
|
|
2902
2860
|
|
|
2903
2861
|
|
|
2904
2862
|
<span class="md-ellipsis">
|
|
2905
|
-
Device
|
|
2863
|
+
Device Type
|
|
2906
2864
|
</span>
|
|
2907
2865
|
|
|
2908
2866
|
|
|
2909
2867
|
</a>
|
|
2910
2868
|
|
|
2911
2869
|
|
|
2912
|
-
<label class="md-nav__link " for="
|
|
2870
|
+
<label class="md-nav__link " for="__nav_2_3_4_8" id="__nav_2_3_4_8_label" tabindex="0">
|
|
2913
2871
|
<span class="md-nav__icon md-icon"></span>
|
|
2914
2872
|
</label>
|
|
2915
2873
|
|
|
2916
2874
|
</div>
|
|
2917
2875
|
|
|
2918
|
-
<nav class="md-nav" data-md-level="4" aria-labelledby="
|
|
2919
|
-
<label class="md-nav__title" for="
|
|
2876
|
+
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_8_label" aria-expanded="false">
|
|
2877
|
+
<label class="md-nav__title" for="__nav_2_3_4_8">
|
|
2920
2878
|
<span class="md-nav__icon md-icon"></span>
|
|
2921
|
-
Device
|
|
2879
|
+
Device Type
|
|
2922
2880
|
</label>
|
|
2923
2881
|
<ul class="md-nav__list" data-md-scrollfix>
|
|
2924
2882
|
|
|
@@ -2929,11 +2887,11 @@
|
|
|
2929
2887
|
|
|
2930
2888
|
|
|
2931
2889
|
<li class="md-nav__item">
|
|
2932
|
-
<a href="../core-data-model/dcim/
|
|
2890
|
+
<a href="../core-data-model/dcim/consoleporttemplate.html" class="md-nav__link">
|
|
2933
2891
|
|
|
2934
2892
|
|
|
2935
2893
|
<span class="md-ellipsis">
|
|
2936
|
-
Console Port
|
|
2894
|
+
Console Port Template
|
|
2937
2895
|
</span>
|
|
2938
2896
|
|
|
2939
2897
|
|
|
@@ -2950,11 +2908,11 @@
|
|
|
2950
2908
|
|
|
2951
2909
|
|
|
2952
2910
|
<li class="md-nav__item">
|
|
2953
|
-
<a href="../core-data-model/dcim/
|
|
2911
|
+
<a href="../core-data-model/dcim/consoleserverporttemplate.html" class="md-nav__link">
|
|
2954
2912
|
|
|
2955
2913
|
|
|
2956
2914
|
<span class="md-ellipsis">
|
|
2957
|
-
Console Server Port
|
|
2915
|
+
Console Server Port Template
|
|
2958
2916
|
</span>
|
|
2959
2917
|
|
|
2960
2918
|
|
|
@@ -2971,11 +2929,11 @@
|
|
|
2971
2929
|
|
|
2972
2930
|
|
|
2973
2931
|
<li class="md-nav__item">
|
|
2974
|
-
<a href="../core-data-model/dcim/
|
|
2932
|
+
<a href="../core-data-model/dcim/devicebaytemplate.html" class="md-nav__link">
|
|
2975
2933
|
|
|
2976
2934
|
|
|
2977
2935
|
<span class="md-ellipsis">
|
|
2978
|
-
Device Bay
|
|
2936
|
+
Device Bay Template
|
|
2979
2937
|
</span>
|
|
2980
2938
|
|
|
2981
2939
|
|
|
@@ -2992,11 +2950,11 @@
|
|
|
2992
2950
|
|
|
2993
2951
|
|
|
2994
2952
|
<li class="md-nav__item">
|
|
2995
|
-
<a href="../core-data-model/dcim/
|
|
2953
|
+
<a href="../core-data-model/dcim/frontporttemplate.html" class="md-nav__link">
|
|
2996
2954
|
|
|
2997
2955
|
|
|
2998
2956
|
<span class="md-ellipsis">
|
|
2999
|
-
Front Port
|
|
2957
|
+
Front Port Template
|
|
3000
2958
|
</span>
|
|
3001
2959
|
|
|
3002
2960
|
|
|
@@ -3013,11 +2971,11 @@
|
|
|
3013
2971
|
|
|
3014
2972
|
|
|
3015
2973
|
<li class="md-nav__item">
|
|
3016
|
-
<a href="../core-data-model/dcim/
|
|
2974
|
+
<a href="../core-data-model/dcim/interfacetemplate.html" class="md-nav__link">
|
|
3017
2975
|
|
|
3018
2976
|
|
|
3019
2977
|
<span class="md-ellipsis">
|
|
3020
|
-
Interface
|
|
2978
|
+
Interface Template
|
|
3021
2979
|
</span>
|
|
3022
2980
|
|
|
3023
2981
|
|
|
@@ -3034,11 +2992,11 @@
|
|
|
3034
2992
|
|
|
3035
2993
|
|
|
3036
2994
|
<li class="md-nav__item">
|
|
3037
|
-
<a href="../core-data-model/dcim/
|
|
2995
|
+
<a href="../core-data-model/dcim/modulebaytemplate.html" class="md-nav__link">
|
|
3038
2996
|
|
|
3039
2997
|
|
|
3040
2998
|
<span class="md-ellipsis">
|
|
3041
|
-
|
|
2999
|
+
Module Bay Template
|
|
3042
3000
|
</span>
|
|
3043
3001
|
|
|
3044
3002
|
|
|
@@ -3055,11 +3013,11 @@
|
|
|
3055
3013
|
|
|
3056
3014
|
|
|
3057
3015
|
<li class="md-nav__item">
|
|
3058
|
-
<a href="../core-data-model/dcim/
|
|
3016
|
+
<a href="../core-data-model/dcim/poweroutlettemplate.html" class="md-nav__link">
|
|
3059
3017
|
|
|
3060
3018
|
|
|
3061
3019
|
<span class="md-ellipsis">
|
|
3062
|
-
Power
|
|
3020
|
+
Power Outlet Template
|
|
3063
3021
|
</span>
|
|
3064
3022
|
|
|
3065
3023
|
|
|
@@ -3076,11 +3034,11 @@
|
|
|
3076
3034
|
|
|
3077
3035
|
|
|
3078
3036
|
<li class="md-nav__item">
|
|
3079
|
-
<a href="../core-data-model/dcim/
|
|
3037
|
+
<a href="../core-data-model/dcim/powerporttemplate.html" class="md-nav__link">
|
|
3080
3038
|
|
|
3081
3039
|
|
|
3082
3040
|
<span class="md-ellipsis">
|
|
3083
|
-
Power
|
|
3041
|
+
Power Port Template
|
|
3084
3042
|
</span>
|
|
3085
3043
|
|
|
3086
3044
|
|
|
@@ -3097,11 +3055,11 @@
|
|
|
3097
3055
|
|
|
3098
3056
|
|
|
3099
3057
|
<li class="md-nav__item">
|
|
3100
|
-
<a href="../core-data-model/dcim/
|
|
3058
|
+
<a href="../core-data-model/dcim/rearporttemplate.html" class="md-nav__link">
|
|
3101
3059
|
|
|
3102
3060
|
|
|
3103
3061
|
<span class="md-ellipsis">
|
|
3104
|
-
Rear Port
|
|
3062
|
+
Rear Port Template
|
|
3105
3063
|
</span>
|
|
3106
3064
|
|
|
3107
3065
|
|
|
@@ -3125,20 +3083,45 @@
|
|
|
3125
3083
|
|
|
3126
3084
|
|
|
3127
3085
|
|
|
3128
|
-
|
|
3129
|
-
|
|
3086
|
+
|
|
3087
|
+
|
|
3088
|
+
|
|
3089
|
+
|
|
3090
|
+
|
|
3091
|
+
|
|
3092
|
+
|
|
3093
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
3094
|
+
|
|
3130
3095
|
|
|
3096
|
+
|
|
3097
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_9" >
|
|
3098
|
+
|
|
3099
|
+
|
|
3100
|
+
|
|
3101
|
+
<div class="md-nav__link md-nav__container">
|
|
3102
|
+
<a href="../core-data-model/dcim/device.html" class="md-nav__link ">
|
|
3103
|
+
|
|
3131
3104
|
|
|
3132
3105
|
<span class="md-ellipsis">
|
|
3133
|
-
|
|
3106
|
+
Device
|
|
3134
3107
|
</span>
|
|
3135
3108
|
|
|
3136
3109
|
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
|
|
3140
|
-
|
|
3110
|
+
</a>
|
|
3111
|
+
|
|
3141
3112
|
|
|
3113
|
+
<label class="md-nav__link " for="__nav_2_3_4_9" id="__nav_2_3_4_9_label" tabindex="0">
|
|
3114
|
+
<span class="md-nav__icon md-icon"></span>
|
|
3115
|
+
</label>
|
|
3116
|
+
|
|
3117
|
+
</div>
|
|
3118
|
+
|
|
3119
|
+
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_9_label" aria-expanded="false">
|
|
3120
|
+
<label class="md-nav__title" for="__nav_2_3_4_9">
|
|
3121
|
+
<span class="md-nav__icon md-icon"></span>
|
|
3122
|
+
Device
|
|
3123
|
+
</label>
|
|
3124
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
3142
3125
|
|
|
3143
3126
|
|
|
3144
3127
|
|
|
@@ -3147,11 +3130,11 @@
|
|
|
3147
3130
|
|
|
3148
3131
|
|
|
3149
3132
|
<li class="md-nav__item">
|
|
3150
|
-
<a href="../core-data-model/dcim/
|
|
3133
|
+
<a href="../core-data-model/dcim/consoleport.html" class="md-nav__link">
|
|
3151
3134
|
|
|
3152
3135
|
|
|
3153
3136
|
<span class="md-ellipsis">
|
|
3154
|
-
|
|
3137
|
+
Console Port
|
|
3155
3138
|
</span>
|
|
3156
3139
|
|
|
3157
3140
|
|
|
@@ -3168,11 +3151,11 @@
|
|
|
3168
3151
|
|
|
3169
3152
|
|
|
3170
3153
|
<li class="md-nav__item">
|
|
3171
|
-
<a href="../core-data-model/dcim/
|
|
3154
|
+
<a href="../core-data-model/dcim/consoleserverport.html" class="md-nav__link">
|
|
3172
3155
|
|
|
3173
3156
|
|
|
3174
3157
|
<span class="md-ellipsis">
|
|
3175
|
-
|
|
3158
|
+
Console Server Port
|
|
3176
3159
|
</span>
|
|
3177
3160
|
|
|
3178
3161
|
|
|
@@ -3189,11 +3172,11 @@
|
|
|
3189
3172
|
|
|
3190
3173
|
|
|
3191
3174
|
<li class="md-nav__item">
|
|
3192
|
-
<a href="../core-data-model/dcim/
|
|
3175
|
+
<a href="../core-data-model/dcim/devicebay.html" class="md-nav__link">
|
|
3193
3176
|
|
|
3194
3177
|
|
|
3195
3178
|
<span class="md-ellipsis">
|
|
3196
|
-
|
|
3179
|
+
Device Bay
|
|
3197
3180
|
</span>
|
|
3198
3181
|
|
|
3199
3182
|
|
|
@@ -3210,11 +3193,11 @@
|
|
|
3210
3193
|
|
|
3211
3194
|
|
|
3212
3195
|
<li class="md-nav__item">
|
|
3213
|
-
<a href="../core-data-model/dcim/
|
|
3196
|
+
<a href="../core-data-model/dcim/frontport.html" class="md-nav__link">
|
|
3214
3197
|
|
|
3215
3198
|
|
|
3216
3199
|
<span class="md-ellipsis">
|
|
3217
|
-
|
|
3200
|
+
Front Port
|
|
3218
3201
|
</span>
|
|
3219
3202
|
|
|
3220
3203
|
|
|
@@ -3231,11 +3214,11 @@
|
|
|
3231
3214
|
|
|
3232
3215
|
|
|
3233
3216
|
<li class="md-nav__item">
|
|
3234
|
-
<a href="../core-data-model/dcim/
|
|
3217
|
+
<a href="../core-data-model/dcim/interface.html" class="md-nav__link">
|
|
3235
3218
|
|
|
3236
3219
|
|
|
3237
3220
|
<span class="md-ellipsis">
|
|
3238
|
-
|
|
3221
|
+
Interface
|
|
3239
3222
|
</span>
|
|
3240
3223
|
|
|
3241
3224
|
|
|
@@ -3252,11 +3235,11 @@
|
|
|
3252
3235
|
|
|
3253
3236
|
|
|
3254
3237
|
<li class="md-nav__item">
|
|
3255
|
-
<a href="../core-data-model/dcim/
|
|
3238
|
+
<a href="../core-data-model/dcim/inventoryitem.html" class="md-nav__link">
|
|
3256
3239
|
|
|
3257
3240
|
|
|
3258
3241
|
<span class="md-ellipsis">
|
|
3259
|
-
|
|
3242
|
+
Inventory Item
|
|
3260
3243
|
</span>
|
|
3261
3244
|
|
|
3262
3245
|
|
|
@@ -3273,11 +3256,11 @@
|
|
|
3273
3256
|
|
|
3274
3257
|
|
|
3275
3258
|
<li class="md-nav__item">
|
|
3276
|
-
<a href="../core-data-model/dcim/
|
|
3259
|
+
<a href="../core-data-model/dcim/modulebay.html" class="md-nav__link">
|
|
3277
3260
|
|
|
3278
3261
|
|
|
3279
3262
|
<span class="md-ellipsis">
|
|
3280
|
-
|
|
3263
|
+
Module Bay
|
|
3281
3264
|
</span>
|
|
3282
3265
|
|
|
3283
3266
|
|
|
@@ -3294,11 +3277,11 @@
|
|
|
3294
3277
|
|
|
3295
3278
|
|
|
3296
3279
|
<li class="md-nav__item">
|
|
3297
|
-
<a href="../core-data-model/dcim/
|
|
3280
|
+
<a href="../core-data-model/dcim/powerport.html" class="md-nav__link">
|
|
3298
3281
|
|
|
3299
3282
|
|
|
3300
3283
|
<span class="md-ellipsis">
|
|
3301
|
-
|
|
3284
|
+
Power Port
|
|
3302
3285
|
</span>
|
|
3303
3286
|
|
|
3304
3287
|
|
|
@@ -3315,11 +3298,11 @@
|
|
|
3315
3298
|
|
|
3316
3299
|
|
|
3317
3300
|
<li class="md-nav__item">
|
|
3318
|
-
<a href="../core-data-model/dcim/
|
|
3301
|
+
<a href="../core-data-model/dcim/poweroutlet.html" class="md-nav__link">
|
|
3319
3302
|
|
|
3320
3303
|
|
|
3321
3304
|
<span class="md-ellipsis">
|
|
3322
|
-
|
|
3305
|
+
Power Outlet
|
|
3323
3306
|
</span>
|
|
3324
3307
|
|
|
3325
3308
|
|
|
@@ -3336,11 +3319,11 @@
|
|
|
3336
3319
|
|
|
3337
3320
|
|
|
3338
3321
|
<li class="md-nav__item">
|
|
3339
|
-
<a href="../core-data-model/dcim/
|
|
3322
|
+
<a href="../core-data-model/dcim/rearport.html" class="md-nav__link">
|
|
3340
3323
|
|
|
3341
3324
|
|
|
3342
3325
|
<span class="md-ellipsis">
|
|
3343
|
-
|
|
3326
|
+
Rear Port
|
|
3344
3327
|
</span>
|
|
3345
3328
|
|
|
3346
3329
|
|
|
@@ -3375,29 +3358,733 @@
|
|
|
3375
3358
|
|
|
3376
3359
|
|
|
3377
3360
|
|
|
3378
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
3361
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_10" >
|
|
3379
3362
|
|
|
3380
3363
|
|
|
3381
|
-
|
|
3382
|
-
|
|
3364
|
+
|
|
3365
|
+
<div class="md-nav__link md-nav__container">
|
|
3366
|
+
<a href="../core-data-model/dcim/moduletype.html" class="md-nav__link ">
|
|
3367
|
+
|
|
3383
3368
|
|
|
3384
3369
|
<span class="md-ellipsis">
|
|
3385
|
-
|
|
3370
|
+
Module Type
|
|
3386
3371
|
</span>
|
|
3387
3372
|
|
|
3388
3373
|
|
|
3389
|
-
|
|
3390
|
-
</label>
|
|
3391
|
-
|
|
3392
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_4_label" aria-expanded="false">
|
|
3393
|
-
<label class="md-nav__title" for="__nav_2_3_4">
|
|
3394
|
-
<span class="md-nav__icon md-icon"></span>
|
|
3395
|
-
Extras
|
|
3396
|
-
</label>
|
|
3397
|
-
<ul class="md-nav__list" data-md-scrollfix>
|
|
3374
|
+
</a>
|
|
3398
3375
|
|
|
3399
3376
|
|
|
3400
|
-
|
|
3377
|
+
<label class="md-nav__link " for="__nav_2_3_4_10" id="__nav_2_3_4_10_label" tabindex="0">
|
|
3378
|
+
<span class="md-nav__icon md-icon"></span>
|
|
3379
|
+
</label>
|
|
3380
|
+
|
|
3381
|
+
</div>
|
|
3382
|
+
|
|
3383
|
+
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_10_label" aria-expanded="false">
|
|
3384
|
+
<label class="md-nav__title" for="__nav_2_3_4_10">
|
|
3385
|
+
<span class="md-nav__icon md-icon"></span>
|
|
3386
|
+
Module Type
|
|
3387
|
+
</label>
|
|
3388
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
3389
|
+
|
|
3390
|
+
|
|
3391
|
+
|
|
3392
|
+
|
|
3393
|
+
|
|
3394
|
+
|
|
3395
|
+
|
|
3396
|
+
<li class="md-nav__item">
|
|
3397
|
+
<a href="../core-data-model/dcim/consoleporttemplate.html" class="md-nav__link">
|
|
3398
|
+
|
|
3399
|
+
|
|
3400
|
+
<span class="md-ellipsis">
|
|
3401
|
+
Console Port Template
|
|
3402
|
+
</span>
|
|
3403
|
+
|
|
3404
|
+
|
|
3405
|
+
</a>
|
|
3406
|
+
</li>
|
|
3407
|
+
|
|
3408
|
+
|
|
3409
|
+
|
|
3410
|
+
|
|
3411
|
+
|
|
3412
|
+
|
|
3413
|
+
|
|
3414
|
+
|
|
3415
|
+
|
|
3416
|
+
|
|
3417
|
+
<li class="md-nav__item">
|
|
3418
|
+
<a href="../core-data-model/dcim/consoleserverporttemplate.html" class="md-nav__link">
|
|
3419
|
+
|
|
3420
|
+
|
|
3421
|
+
<span class="md-ellipsis">
|
|
3422
|
+
Console Server Port Template
|
|
3423
|
+
</span>
|
|
3424
|
+
|
|
3425
|
+
|
|
3426
|
+
</a>
|
|
3427
|
+
</li>
|
|
3428
|
+
|
|
3429
|
+
|
|
3430
|
+
|
|
3431
|
+
|
|
3432
|
+
|
|
3433
|
+
|
|
3434
|
+
|
|
3435
|
+
|
|
3436
|
+
|
|
3437
|
+
|
|
3438
|
+
<li class="md-nav__item">
|
|
3439
|
+
<a href="../core-data-model/dcim/frontporttemplate.html" class="md-nav__link">
|
|
3440
|
+
|
|
3441
|
+
|
|
3442
|
+
<span class="md-ellipsis">
|
|
3443
|
+
Front Port Template
|
|
3444
|
+
</span>
|
|
3445
|
+
|
|
3446
|
+
|
|
3447
|
+
</a>
|
|
3448
|
+
</li>
|
|
3449
|
+
|
|
3450
|
+
|
|
3451
|
+
|
|
3452
|
+
|
|
3453
|
+
|
|
3454
|
+
|
|
3455
|
+
|
|
3456
|
+
|
|
3457
|
+
|
|
3458
|
+
|
|
3459
|
+
<li class="md-nav__item">
|
|
3460
|
+
<a href="../core-data-model/dcim/interfacetemplate.html" class="md-nav__link">
|
|
3461
|
+
|
|
3462
|
+
|
|
3463
|
+
<span class="md-ellipsis">
|
|
3464
|
+
Interface Template
|
|
3465
|
+
</span>
|
|
3466
|
+
|
|
3467
|
+
|
|
3468
|
+
</a>
|
|
3469
|
+
</li>
|
|
3470
|
+
|
|
3471
|
+
|
|
3472
|
+
|
|
3473
|
+
|
|
3474
|
+
|
|
3475
|
+
|
|
3476
|
+
|
|
3477
|
+
|
|
3478
|
+
|
|
3479
|
+
|
|
3480
|
+
<li class="md-nav__item">
|
|
3481
|
+
<a href="../core-data-model/dcim/modulebaytemplate.html" class="md-nav__link">
|
|
3482
|
+
|
|
3483
|
+
|
|
3484
|
+
<span class="md-ellipsis">
|
|
3485
|
+
Module Bay Template
|
|
3486
|
+
</span>
|
|
3487
|
+
|
|
3488
|
+
|
|
3489
|
+
</a>
|
|
3490
|
+
</li>
|
|
3491
|
+
|
|
3492
|
+
|
|
3493
|
+
|
|
3494
|
+
|
|
3495
|
+
|
|
3496
|
+
|
|
3497
|
+
|
|
3498
|
+
|
|
3499
|
+
|
|
3500
|
+
|
|
3501
|
+
<li class="md-nav__item">
|
|
3502
|
+
<a href="../core-data-model/dcim/poweroutlettemplate.html" class="md-nav__link">
|
|
3503
|
+
|
|
3504
|
+
|
|
3505
|
+
<span class="md-ellipsis">
|
|
3506
|
+
Power Outlet Template
|
|
3507
|
+
</span>
|
|
3508
|
+
|
|
3509
|
+
|
|
3510
|
+
</a>
|
|
3511
|
+
</li>
|
|
3512
|
+
|
|
3513
|
+
|
|
3514
|
+
|
|
3515
|
+
|
|
3516
|
+
|
|
3517
|
+
|
|
3518
|
+
|
|
3519
|
+
|
|
3520
|
+
|
|
3521
|
+
|
|
3522
|
+
<li class="md-nav__item">
|
|
3523
|
+
<a href="../core-data-model/dcim/powerporttemplate.html" class="md-nav__link">
|
|
3524
|
+
|
|
3525
|
+
|
|
3526
|
+
<span class="md-ellipsis">
|
|
3527
|
+
Power Port Template
|
|
3528
|
+
</span>
|
|
3529
|
+
|
|
3530
|
+
|
|
3531
|
+
</a>
|
|
3532
|
+
</li>
|
|
3533
|
+
|
|
3534
|
+
|
|
3535
|
+
|
|
3536
|
+
|
|
3537
|
+
|
|
3538
|
+
|
|
3539
|
+
|
|
3540
|
+
|
|
3541
|
+
|
|
3542
|
+
|
|
3543
|
+
<li class="md-nav__item">
|
|
3544
|
+
<a href="../core-data-model/dcim/rearporttemplate.html" class="md-nav__link">
|
|
3545
|
+
|
|
3546
|
+
|
|
3547
|
+
<span class="md-ellipsis">
|
|
3548
|
+
Rear Port Template
|
|
3549
|
+
</span>
|
|
3550
|
+
|
|
3551
|
+
|
|
3552
|
+
</a>
|
|
3553
|
+
</li>
|
|
3554
|
+
|
|
3555
|
+
|
|
3556
|
+
|
|
3557
|
+
|
|
3558
|
+
</ul>
|
|
3559
|
+
</nav>
|
|
3560
|
+
|
|
3561
|
+
</li>
|
|
3562
|
+
|
|
3563
|
+
|
|
3564
|
+
|
|
3565
|
+
|
|
3566
|
+
|
|
3567
|
+
|
|
3568
|
+
|
|
3569
|
+
|
|
3570
|
+
|
|
3571
|
+
|
|
3572
|
+
|
|
3573
|
+
|
|
3574
|
+
|
|
3575
|
+
|
|
3576
|
+
|
|
3577
|
+
|
|
3578
|
+
|
|
3579
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
3580
|
+
|
|
3581
|
+
|
|
3582
|
+
|
|
3583
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_4_11" >
|
|
3584
|
+
|
|
3585
|
+
|
|
3586
|
+
|
|
3587
|
+
<div class="md-nav__link md-nav__container">
|
|
3588
|
+
<a href="../core-data-model/dcim/module.html" class="md-nav__link ">
|
|
3589
|
+
|
|
3590
|
+
|
|
3591
|
+
<span class="md-ellipsis">
|
|
3592
|
+
Module
|
|
3593
|
+
</span>
|
|
3594
|
+
|
|
3595
|
+
|
|
3596
|
+
</a>
|
|
3597
|
+
|
|
3598
|
+
|
|
3599
|
+
<label class="md-nav__link " for="__nav_2_3_4_11" id="__nav_2_3_4_11_label" tabindex="0">
|
|
3600
|
+
<span class="md-nav__icon md-icon"></span>
|
|
3601
|
+
</label>
|
|
3602
|
+
|
|
3603
|
+
</div>
|
|
3604
|
+
|
|
3605
|
+
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_2_3_4_11_label" aria-expanded="false">
|
|
3606
|
+
<label class="md-nav__title" for="__nav_2_3_4_11">
|
|
3607
|
+
<span class="md-nav__icon md-icon"></span>
|
|
3608
|
+
Module
|
|
3609
|
+
</label>
|
|
3610
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
3611
|
+
|
|
3612
|
+
|
|
3613
|
+
|
|
3614
|
+
|
|
3615
|
+
|
|
3616
|
+
|
|
3617
|
+
|
|
3618
|
+
<li class="md-nav__item">
|
|
3619
|
+
<a href="../core-data-model/dcim/consoleport.html" class="md-nav__link">
|
|
3620
|
+
|
|
3621
|
+
|
|
3622
|
+
<span class="md-ellipsis">
|
|
3623
|
+
Console Port
|
|
3624
|
+
</span>
|
|
3625
|
+
|
|
3626
|
+
|
|
3627
|
+
</a>
|
|
3628
|
+
</li>
|
|
3629
|
+
|
|
3630
|
+
|
|
3631
|
+
|
|
3632
|
+
|
|
3633
|
+
|
|
3634
|
+
|
|
3635
|
+
|
|
3636
|
+
|
|
3637
|
+
|
|
3638
|
+
|
|
3639
|
+
<li class="md-nav__item">
|
|
3640
|
+
<a href="../core-data-model/dcim/consoleserverport.html" class="md-nav__link">
|
|
3641
|
+
|
|
3642
|
+
|
|
3643
|
+
<span class="md-ellipsis">
|
|
3644
|
+
Console Server Port
|
|
3645
|
+
</span>
|
|
3646
|
+
|
|
3647
|
+
|
|
3648
|
+
</a>
|
|
3649
|
+
</li>
|
|
3650
|
+
|
|
3651
|
+
|
|
3652
|
+
|
|
3653
|
+
|
|
3654
|
+
|
|
3655
|
+
|
|
3656
|
+
|
|
3657
|
+
|
|
3658
|
+
|
|
3659
|
+
|
|
3660
|
+
<li class="md-nav__item">
|
|
3661
|
+
<a href="../core-data-model/dcim/frontport.html" class="md-nav__link">
|
|
3662
|
+
|
|
3663
|
+
|
|
3664
|
+
<span class="md-ellipsis">
|
|
3665
|
+
Front Port
|
|
3666
|
+
</span>
|
|
3667
|
+
|
|
3668
|
+
|
|
3669
|
+
</a>
|
|
3670
|
+
</li>
|
|
3671
|
+
|
|
3672
|
+
|
|
3673
|
+
|
|
3674
|
+
|
|
3675
|
+
|
|
3676
|
+
|
|
3677
|
+
|
|
3678
|
+
|
|
3679
|
+
|
|
3680
|
+
|
|
3681
|
+
<li class="md-nav__item">
|
|
3682
|
+
<a href="../core-data-model/dcim/interface.html" class="md-nav__link">
|
|
3683
|
+
|
|
3684
|
+
|
|
3685
|
+
<span class="md-ellipsis">
|
|
3686
|
+
Interface
|
|
3687
|
+
</span>
|
|
3688
|
+
|
|
3689
|
+
|
|
3690
|
+
</a>
|
|
3691
|
+
</li>
|
|
3692
|
+
|
|
3693
|
+
|
|
3694
|
+
|
|
3695
|
+
|
|
3696
|
+
|
|
3697
|
+
|
|
3698
|
+
|
|
3699
|
+
|
|
3700
|
+
|
|
3701
|
+
|
|
3702
|
+
<li class="md-nav__item">
|
|
3703
|
+
<a href="../core-data-model/dcim/inventoryitem.html" class="md-nav__link">
|
|
3704
|
+
|
|
3705
|
+
|
|
3706
|
+
<span class="md-ellipsis">
|
|
3707
|
+
Inventory Item
|
|
3708
|
+
</span>
|
|
3709
|
+
|
|
3710
|
+
|
|
3711
|
+
</a>
|
|
3712
|
+
</li>
|
|
3713
|
+
|
|
3714
|
+
|
|
3715
|
+
|
|
3716
|
+
|
|
3717
|
+
|
|
3718
|
+
|
|
3719
|
+
|
|
3720
|
+
|
|
3721
|
+
|
|
3722
|
+
|
|
3723
|
+
<li class="md-nav__item">
|
|
3724
|
+
<a href="../core-data-model/dcim/modulebay.html" class="md-nav__link">
|
|
3725
|
+
|
|
3726
|
+
|
|
3727
|
+
<span class="md-ellipsis">
|
|
3728
|
+
Module Bay
|
|
3729
|
+
</span>
|
|
3730
|
+
|
|
3731
|
+
|
|
3732
|
+
</a>
|
|
3733
|
+
</li>
|
|
3734
|
+
|
|
3735
|
+
|
|
3736
|
+
|
|
3737
|
+
|
|
3738
|
+
|
|
3739
|
+
|
|
3740
|
+
|
|
3741
|
+
|
|
3742
|
+
|
|
3743
|
+
|
|
3744
|
+
<li class="md-nav__item">
|
|
3745
|
+
<a href="../core-data-model/dcim/powerport.html" class="md-nav__link">
|
|
3746
|
+
|
|
3747
|
+
|
|
3748
|
+
<span class="md-ellipsis">
|
|
3749
|
+
Power Port
|
|
3750
|
+
</span>
|
|
3751
|
+
|
|
3752
|
+
|
|
3753
|
+
</a>
|
|
3754
|
+
</li>
|
|
3755
|
+
|
|
3756
|
+
|
|
3757
|
+
|
|
3758
|
+
|
|
3759
|
+
|
|
3760
|
+
|
|
3761
|
+
|
|
3762
|
+
|
|
3763
|
+
|
|
3764
|
+
|
|
3765
|
+
<li class="md-nav__item">
|
|
3766
|
+
<a href="../core-data-model/dcim/poweroutlet.html" class="md-nav__link">
|
|
3767
|
+
|
|
3768
|
+
|
|
3769
|
+
<span class="md-ellipsis">
|
|
3770
|
+
Power Outlet
|
|
3771
|
+
</span>
|
|
3772
|
+
|
|
3773
|
+
|
|
3774
|
+
</a>
|
|
3775
|
+
</li>
|
|
3776
|
+
|
|
3777
|
+
|
|
3778
|
+
|
|
3779
|
+
|
|
3780
|
+
|
|
3781
|
+
|
|
3782
|
+
|
|
3783
|
+
|
|
3784
|
+
|
|
3785
|
+
|
|
3786
|
+
<li class="md-nav__item">
|
|
3787
|
+
<a href="../core-data-model/dcim/rearport.html" class="md-nav__link">
|
|
3788
|
+
|
|
3789
|
+
|
|
3790
|
+
<span class="md-ellipsis">
|
|
3791
|
+
Rear Port
|
|
3792
|
+
</span>
|
|
3793
|
+
|
|
3794
|
+
|
|
3795
|
+
</a>
|
|
3796
|
+
</li>
|
|
3797
|
+
|
|
3798
|
+
|
|
3799
|
+
|
|
3800
|
+
|
|
3801
|
+
</ul>
|
|
3802
|
+
</nav>
|
|
3803
|
+
|
|
3804
|
+
</li>
|
|
3805
|
+
|
|
3806
|
+
|
|
3807
|
+
|
|
3808
|
+
|
|
3809
|
+
|
|
3810
|
+
|
|
3811
|
+
|
|
3812
|
+
|
|
3813
|
+
|
|
3814
|
+
|
|
3815
|
+
<li class="md-nav__item">
|
|
3816
|
+
<a href="../core-data-model/dcim/cable.html" class="md-nav__link">
|
|
3817
|
+
|
|
3818
|
+
|
|
3819
|
+
<span class="md-ellipsis">
|
|
3820
|
+
Cable
|
|
3821
|
+
</span>
|
|
3822
|
+
|
|
3823
|
+
|
|
3824
|
+
</a>
|
|
3825
|
+
</li>
|
|
3826
|
+
|
|
3827
|
+
|
|
3828
|
+
|
|
3829
|
+
|
|
3830
|
+
|
|
3831
|
+
|
|
3832
|
+
|
|
3833
|
+
|
|
3834
|
+
|
|
3835
|
+
|
|
3836
|
+
<li class="md-nav__item">
|
|
3837
|
+
<a href="../core-data-model/dcim/deviceredundancygroup.html" class="md-nav__link">
|
|
3838
|
+
|
|
3839
|
+
|
|
3840
|
+
<span class="md-ellipsis">
|
|
3841
|
+
Device Redundancy Group
|
|
3842
|
+
</span>
|
|
3843
|
+
|
|
3844
|
+
|
|
3845
|
+
</a>
|
|
3846
|
+
</li>
|
|
3847
|
+
|
|
3848
|
+
|
|
3849
|
+
|
|
3850
|
+
|
|
3851
|
+
|
|
3852
|
+
|
|
3853
|
+
|
|
3854
|
+
|
|
3855
|
+
|
|
3856
|
+
|
|
3857
|
+
<li class="md-nav__item">
|
|
3858
|
+
<a href="../core-data-model/dcim/interfaceredundancygroup.html" class="md-nav__link">
|
|
3859
|
+
|
|
3860
|
+
|
|
3861
|
+
<span class="md-ellipsis">
|
|
3862
|
+
Interface Redundancy Group
|
|
3863
|
+
</span>
|
|
3864
|
+
|
|
3865
|
+
|
|
3866
|
+
</a>
|
|
3867
|
+
</li>
|
|
3868
|
+
|
|
3869
|
+
|
|
3870
|
+
|
|
3871
|
+
|
|
3872
|
+
|
|
3873
|
+
|
|
3874
|
+
|
|
3875
|
+
|
|
3876
|
+
|
|
3877
|
+
|
|
3878
|
+
<li class="md-nav__item">
|
|
3879
|
+
<a href="../core-data-model/dcim/powerpanel.html" class="md-nav__link">
|
|
3880
|
+
|
|
3881
|
+
|
|
3882
|
+
<span class="md-ellipsis">
|
|
3883
|
+
Power Panel
|
|
3884
|
+
</span>
|
|
3885
|
+
|
|
3886
|
+
|
|
3887
|
+
</a>
|
|
3888
|
+
</li>
|
|
3889
|
+
|
|
3890
|
+
|
|
3891
|
+
|
|
3892
|
+
|
|
3893
|
+
|
|
3894
|
+
|
|
3895
|
+
|
|
3896
|
+
|
|
3897
|
+
|
|
3898
|
+
|
|
3899
|
+
<li class="md-nav__item">
|
|
3900
|
+
<a href="../core-data-model/dcim/powerfeed.html" class="md-nav__link">
|
|
3901
|
+
|
|
3902
|
+
|
|
3903
|
+
<span class="md-ellipsis">
|
|
3904
|
+
Power Feed
|
|
3905
|
+
</span>
|
|
3906
|
+
|
|
3907
|
+
|
|
3908
|
+
</a>
|
|
3909
|
+
</li>
|
|
3910
|
+
|
|
3911
|
+
|
|
3912
|
+
|
|
3913
|
+
|
|
3914
|
+
|
|
3915
|
+
|
|
3916
|
+
|
|
3917
|
+
|
|
3918
|
+
|
|
3919
|
+
|
|
3920
|
+
<li class="md-nav__item">
|
|
3921
|
+
<a href="../core-data-model/dcim/rackreservation.html" class="md-nav__link">
|
|
3922
|
+
|
|
3923
|
+
|
|
3924
|
+
<span class="md-ellipsis">
|
|
3925
|
+
Rack Reservation
|
|
3926
|
+
</span>
|
|
3927
|
+
|
|
3928
|
+
|
|
3929
|
+
</a>
|
|
3930
|
+
</li>
|
|
3931
|
+
|
|
3932
|
+
|
|
3933
|
+
|
|
3934
|
+
|
|
3935
|
+
|
|
3936
|
+
|
|
3937
|
+
|
|
3938
|
+
|
|
3939
|
+
|
|
3940
|
+
|
|
3941
|
+
<li class="md-nav__item">
|
|
3942
|
+
<a href="../core-data-model/dcim/softwareimagefile.html" class="md-nav__link">
|
|
3943
|
+
|
|
3944
|
+
|
|
3945
|
+
<span class="md-ellipsis">
|
|
3946
|
+
Software Image File
|
|
3947
|
+
</span>
|
|
3948
|
+
|
|
3949
|
+
|
|
3950
|
+
</a>
|
|
3951
|
+
</li>
|
|
3952
|
+
|
|
3953
|
+
|
|
3954
|
+
|
|
3955
|
+
|
|
3956
|
+
|
|
3957
|
+
|
|
3958
|
+
|
|
3959
|
+
|
|
3960
|
+
|
|
3961
|
+
|
|
3962
|
+
<li class="md-nav__item">
|
|
3963
|
+
<a href="../core-data-model/dcim/softwareversion.html" class="md-nav__link">
|
|
3964
|
+
|
|
3965
|
+
|
|
3966
|
+
<span class="md-ellipsis">
|
|
3967
|
+
Software Version
|
|
3968
|
+
</span>
|
|
3969
|
+
|
|
3970
|
+
|
|
3971
|
+
</a>
|
|
3972
|
+
</li>
|
|
3973
|
+
|
|
3974
|
+
|
|
3975
|
+
|
|
3976
|
+
|
|
3977
|
+
|
|
3978
|
+
|
|
3979
|
+
|
|
3980
|
+
|
|
3981
|
+
|
|
3982
|
+
|
|
3983
|
+
<li class="md-nav__item">
|
|
3984
|
+
<a href="../core-data-model/dcim/virtualchassis.html" class="md-nav__link">
|
|
3985
|
+
|
|
3986
|
+
|
|
3987
|
+
<span class="md-ellipsis">
|
|
3988
|
+
Virtual Chassis
|
|
3989
|
+
</span>
|
|
3990
|
+
|
|
3991
|
+
|
|
3992
|
+
</a>
|
|
3993
|
+
</li>
|
|
3994
|
+
|
|
3995
|
+
|
|
3996
|
+
|
|
3997
|
+
|
|
3998
|
+
|
|
3999
|
+
|
|
4000
|
+
|
|
4001
|
+
|
|
4002
|
+
|
|
4003
|
+
|
|
4004
|
+
<li class="md-nav__item">
|
|
4005
|
+
<a href="../core-data-model/dcim/controller.html" class="md-nav__link">
|
|
4006
|
+
|
|
4007
|
+
|
|
4008
|
+
<span class="md-ellipsis">
|
|
4009
|
+
Controller
|
|
4010
|
+
</span>
|
|
4011
|
+
|
|
4012
|
+
|
|
4013
|
+
</a>
|
|
4014
|
+
</li>
|
|
4015
|
+
|
|
4016
|
+
|
|
4017
|
+
|
|
4018
|
+
|
|
4019
|
+
|
|
4020
|
+
|
|
4021
|
+
|
|
4022
|
+
|
|
4023
|
+
|
|
4024
|
+
|
|
4025
|
+
<li class="md-nav__item">
|
|
4026
|
+
<a href="../core-data-model/dcim/controllermanageddevicegroup.html" class="md-nav__link">
|
|
4027
|
+
|
|
4028
|
+
|
|
4029
|
+
<span class="md-ellipsis">
|
|
4030
|
+
Controller Managed Device Group
|
|
4031
|
+
</span>
|
|
4032
|
+
|
|
4033
|
+
|
|
4034
|
+
</a>
|
|
4035
|
+
</li>
|
|
4036
|
+
|
|
4037
|
+
|
|
4038
|
+
|
|
4039
|
+
|
|
4040
|
+
</ul>
|
|
4041
|
+
</nav>
|
|
4042
|
+
|
|
4043
|
+
</li>
|
|
4044
|
+
|
|
4045
|
+
|
|
4046
|
+
|
|
4047
|
+
|
|
4048
|
+
|
|
4049
|
+
|
|
4050
|
+
|
|
4051
|
+
|
|
4052
|
+
|
|
4053
|
+
|
|
4054
|
+
|
|
4055
|
+
|
|
4056
|
+
|
|
4057
|
+
|
|
4058
|
+
|
|
4059
|
+
|
|
4060
|
+
|
|
4061
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
4062
|
+
|
|
4063
|
+
|
|
4064
|
+
|
|
4065
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_5" >
|
|
4066
|
+
|
|
4067
|
+
|
|
4068
|
+
<label class="md-nav__link" for="__nav_2_3_5" id="__nav_2_3_5_label" tabindex="0">
|
|
4069
|
+
|
|
4070
|
+
|
|
4071
|
+
<span class="md-ellipsis">
|
|
4072
|
+
Extras
|
|
4073
|
+
</span>
|
|
4074
|
+
|
|
4075
|
+
|
|
4076
|
+
<span class="md-nav__icon md-icon"></span>
|
|
4077
|
+
</label>
|
|
4078
|
+
|
|
4079
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_5_label" aria-expanded="false">
|
|
4080
|
+
<label class="md-nav__title" for="__nav_2_3_5">
|
|
4081
|
+
<span class="md-nav__icon md-icon"></span>
|
|
4082
|
+
Extras
|
|
4083
|
+
</label>
|
|
4084
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
4085
|
+
|
|
4086
|
+
|
|
4087
|
+
|
|
3401
4088
|
|
|
3402
4089
|
|
|
3403
4090
|
|
|
@@ -3505,10 +4192,10 @@
|
|
|
3505
4192
|
|
|
3506
4193
|
|
|
3507
4194
|
|
|
3508
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
4195
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_6" >
|
|
3509
4196
|
|
|
3510
4197
|
|
|
3511
|
-
<label class="md-nav__link" for="
|
|
4198
|
+
<label class="md-nav__link" for="__nav_2_3_6" id="__nav_2_3_6_label" tabindex="0">
|
|
3512
4199
|
|
|
3513
4200
|
|
|
3514
4201
|
<span class="md-ellipsis">
|
|
@@ -3519,8 +4206,8 @@
|
|
|
3519
4206
|
<span class="md-nav__icon md-icon"></span>
|
|
3520
4207
|
</label>
|
|
3521
4208
|
|
|
3522
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="
|
|
3523
|
-
<label class="md-nav__title" for="
|
|
4209
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_6_label" aria-expanded="false">
|
|
4210
|
+
<label class="md-nav__title" for="__nav_2_3_6">
|
|
3524
4211
|
<span class="md-nav__icon md-icon"></span>
|
|
3525
4212
|
IPAM
|
|
3526
4213
|
</label>
|
|
@@ -3740,10 +4427,10 @@
|
|
|
3740
4427
|
|
|
3741
4428
|
|
|
3742
4429
|
|
|
3743
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
4430
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_7" >
|
|
3744
4431
|
|
|
3745
4432
|
|
|
3746
|
-
<label class="md-nav__link" for="
|
|
4433
|
+
<label class="md-nav__link" for="__nav_2_3_7" id="__nav_2_3_7_label" tabindex="0">
|
|
3747
4434
|
|
|
3748
4435
|
|
|
3749
4436
|
<span class="md-ellipsis">
|
|
@@ -3754,8 +4441,8 @@
|
|
|
3754
4441
|
<span class="md-nav__icon md-icon"></span>
|
|
3755
4442
|
</label>
|
|
3756
4443
|
|
|
3757
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="
|
|
3758
|
-
<label class="md-nav__title" for="
|
|
4444
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_7_label" aria-expanded="false">
|
|
4445
|
+
<label class="md-nav__title" for="__nav_2_3_7">
|
|
3759
4446
|
<span class="md-nav__icon md-icon"></span>
|
|
3760
4447
|
Tenancy
|
|
3761
4448
|
</label>
|
|
@@ -3828,10 +4515,10 @@
|
|
|
3828
4515
|
|
|
3829
4516
|
|
|
3830
4517
|
|
|
3831
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
4518
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_8" >
|
|
3832
4519
|
|
|
3833
4520
|
|
|
3834
|
-
<label class="md-nav__link" for="
|
|
4521
|
+
<label class="md-nav__link" for="__nav_2_3_8" id="__nav_2_3_8_label" tabindex="0">
|
|
3835
4522
|
|
|
3836
4523
|
|
|
3837
4524
|
<span class="md-ellipsis">
|
|
@@ -3842,8 +4529,8 @@
|
|
|
3842
4529
|
<span class="md-nav__icon md-icon"></span>
|
|
3843
4530
|
</label>
|
|
3844
4531
|
|
|
3845
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="
|
|
3846
|
-
<label class="md-nav__title" for="
|
|
4532
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_8_label" aria-expanded="false">
|
|
4533
|
+
<label class="md-nav__title" for="__nav_2_3_8">
|
|
3847
4534
|
<span class="md-nav__icon md-icon"></span>
|
|
3848
4535
|
Virtualization
|
|
3849
4536
|
</label>
|
|
@@ -4098,369 +4785,73 @@
|
|
|
4098
4785
|
|
|
4099
4786
|
|
|
4100
4787
|
|
|
4101
|
-
|
|
4102
|
-
|
|
4103
|
-
|
|
4104
|
-
|
|
4105
|
-
<li class="md-nav__item md-nav__item--active">
|
|
4106
|
-
|
|
4107
|
-
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
|
4108
|
-
|
|
4109
|
-
|
|
4110
|
-
|
|
4111
|
-
|
|
4112
|
-
|
|
4113
|
-
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
4114
|
-
|
|
4115
|
-
|
|
4116
|
-
<span class="md-ellipsis">
|
|
4117
|
-
Dynamic Groups
|
|
4118
|
-
</span>
|
|
4119
|
-
|
|
4120
|
-
|
|
4121
|
-
<span class="md-nav__icon md-icon"></span>
|
|
4122
|
-
</label>
|
|
4123
|
-
|
|
4124
|
-
<a href="dynamicgroup.html" class="md-nav__link md-nav__link--active">
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
<span class="md-ellipsis">
|
|
4128
|
-
Dynamic Groups
|
|
4129
|
-
</span>
|
|
4130
|
-
|
|
4131
|
-
|
|
4132
|
-
</a>
|
|
4133
|
-
|
|
4134
|
-
|
|
4135
|
-
|
|
4136
|
-
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
|
4137
|
-
|
|
4138
|
-
|
|
4139
|
-
|
|
4140
|
-
|
|
4141
|
-
|
|
4142
|
-
|
|
4143
|
-
<label class="md-nav__title" for="__toc">
|
|
4144
|
-
<span class="md-nav__icon md-icon"></span>
|
|
4145
|
-
Table of contents
|
|
4146
|
-
</label>
|
|
4147
|
-
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
4148
|
-
|
|
4149
|
-
<li class="md-nav__item">
|
|
4150
|
-
<a href="#introduction" class="md-nav__link">
|
|
4151
|
-
<span class="md-ellipsis">
|
|
4152
|
-
Introduction
|
|
4153
|
-
</span>
|
|
4154
|
-
</a>
|
|
4155
|
-
|
|
4156
|
-
<nav class="md-nav" aria-label="Introduction">
|
|
4157
|
-
<ul class="md-nav__list">
|
|
4158
|
-
|
|
4159
|
-
<li class="md-nav__item">
|
|
4160
|
-
<a href="#creating-dynamic-groups" class="md-nav__link">
|
|
4161
|
-
<span class="md-ellipsis">
|
|
4162
|
-
Creating Dynamic Groups
|
|
4163
|
-
</span>
|
|
4164
|
-
</a>
|
|
4165
|
-
|
|
4166
|
-
</li>
|
|
4167
|
-
|
|
4168
|
-
<li class="md-nav__item">
|
|
4169
|
-
<a href="#working-with-dynamic-groups" class="md-nav__link">
|
|
4170
|
-
<span class="md-ellipsis">
|
|
4171
|
-
Working with Dynamic Groups
|
|
4172
|
-
</span>
|
|
4173
|
-
</a>
|
|
4174
|
-
|
|
4175
|
-
</li>
|
|
4176
|
-
|
|
4177
|
-
<li class="md-nav__item">
|
|
4178
|
-
<a href="#filtering" class="md-nav__link">
|
|
4179
|
-
<span class="md-ellipsis">
|
|
4180
|
-
Filtering
|
|
4181
|
-
</span>
|
|
4182
|
-
</a>
|
|
4183
|
-
|
|
4184
|
-
<nav class="md-nav" aria-label="Filtering">
|
|
4185
|
-
<ul class="md-nav__list">
|
|
4186
|
-
|
|
4187
|
-
<li class="md-nav__item">
|
|
4188
|
-
<a href="#basic-filtering" class="md-nav__link">
|
|
4189
|
-
<span class="md-ellipsis">
|
|
4190
|
-
Basic Filtering
|
|
4191
|
-
</span>
|
|
4192
|
-
</a>
|
|
4193
|
-
|
|
4194
|
-
</li>
|
|
4195
|
-
|
|
4196
|
-
<li class="md-nav__item">
|
|
4197
|
-
<a href="#advanced-filtering" class="md-nav__link">
|
|
4198
|
-
<span class="md-ellipsis">
|
|
4199
|
-
Advanced Filtering
|
|
4200
|
-
</span>
|
|
4201
|
-
</a>
|
|
4202
|
-
|
|
4203
|
-
</li>
|
|
4204
|
-
|
|
4205
|
-
</ul>
|
|
4206
|
-
</nav>
|
|
4207
|
-
|
|
4208
|
-
</li>
|
|
4209
|
-
|
|
4210
|
-
</ul>
|
|
4211
|
-
</nav>
|
|
4212
|
-
|
|
4213
|
-
</li>
|
|
4214
|
-
|
|
4215
|
-
<li class="md-nav__item">
|
|
4216
|
-
<a href="#example-workflow" class="md-nav__link">
|
|
4217
|
-
<span class="md-ellipsis">
|
|
4218
|
-
Example Workflow
|
|
4219
|
-
</span>
|
|
4220
|
-
</a>
|
|
4221
|
-
|
|
4222
|
-
<nav class="md-nav" aria-label="Example Workflow">
|
|
4223
|
-
<ul class="md-nav__list">
|
|
4224
|
-
|
|
4225
|
-
<li class="md-nav__item">
|
|
4226
|
-
<a href="#basic-filtering-with-a-single-dynamic-group" class="md-nav__link">
|
|
4227
|
-
<span class="md-ellipsis">
|
|
4228
|
-
Basic Filtering with a single Dynamic Group
|
|
4229
|
-
</span>
|
|
4230
|
-
</a>
|
|
4231
|
-
|
|
4232
|
-
</li>
|
|
4233
|
-
|
|
4234
|
-
<li class="md-nav__item">
|
|
4235
|
-
<a href="#advanced-filtering-combining-two-dynamic-groups-into-a-third" class="md-nav__link">
|
|
4236
|
-
<span class="md-ellipsis">
|
|
4237
|
-
Advanced Filtering - Combining Two Dynamic Groups into a Third
|
|
4238
|
-
</span>
|
|
4239
|
-
</a>
|
|
4240
|
-
|
|
4241
|
-
</li>
|
|
4242
|
-
|
|
4243
|
-
<li class="md-nav__item">
|
|
4244
|
-
<a href="#advanced-filtering-nested-groups-and-negation" class="md-nav__link">
|
|
4245
|
-
<span class="md-ellipsis">
|
|
4246
|
-
Advanced Filtering: Nested Groups and Negation
|
|
4247
|
-
</span>
|
|
4248
|
-
</a>
|
|
4249
|
-
|
|
4250
|
-
</li>
|
|
4251
|
-
|
|
4252
|
-
</ul>
|
|
4253
|
-
</nav>
|
|
4254
|
-
|
|
4255
|
-
</li>
|
|
4256
|
-
|
|
4257
|
-
<li class="md-nav__item">
|
|
4258
|
-
<a href="#technical-details" class="md-nav__link">
|
|
4259
|
-
<span class="md-ellipsis">
|
|
4260
|
-
Technical Details
|
|
4261
|
-
</span>
|
|
4262
|
-
</a>
|
|
4263
|
-
|
|
4264
|
-
<nav class="md-nav" aria-label="Technical Details">
|
|
4265
|
-
<ul class="md-nav__list">
|
|
4266
|
-
|
|
4267
|
-
<li class="md-nav__item">
|
|
4268
|
-
<a href="#filter-generation" class="md-nav__link">
|
|
4269
|
-
<span class="md-ellipsis">
|
|
4270
|
-
Filter Generation
|
|
4271
|
-
</span>
|
|
4272
|
-
</a>
|
|
4273
|
-
|
|
4274
|
-
</li>
|
|
4275
|
-
|
|
4276
|
-
<li class="md-nav__item">
|
|
4277
|
-
<a href="#weights" class="md-nav__link">
|
|
4278
|
-
<span class="md-ellipsis">
|
|
4279
|
-
Weights
|
|
4280
|
-
</span>
|
|
4281
|
-
</a>
|
|
4282
|
-
|
|
4283
|
-
</li>
|
|
4284
|
-
|
|
4285
|
-
<li class="md-nav__item">
|
|
4286
|
-
<a href="#operators" class="md-nav__link">
|
|
4287
|
-
<span class="md-ellipsis">
|
|
4288
|
-
Operators
|
|
4289
|
-
</span>
|
|
4290
|
-
</a>
|
|
4291
|
-
|
|
4292
|
-
<nav class="md-nav" aria-label="Operators">
|
|
4293
|
-
<ul class="md-nav__list">
|
|
4294
|
-
|
|
4295
|
-
<li class="md-nav__item">
|
|
4296
|
-
<a href="#how-does-this-work" class="md-nav__link">
|
|
4297
|
-
<span class="md-ellipsis">
|
|
4298
|
-
How does this work?
|
|
4299
|
-
</span>
|
|
4300
|
-
</a>
|
|
4301
|
-
|
|
4302
|
-
</li>
|
|
4303
|
-
|
|
4304
|
-
</ul>
|
|
4305
|
-
</nav>
|
|
4306
|
-
|
|
4307
|
-
</li>
|
|
4308
|
-
|
|
4309
|
-
</ul>
|
|
4310
|
-
</nav>
|
|
4311
|
-
|
|
4312
|
-
</li>
|
|
4313
|
-
|
|
4314
|
-
<li class="md-nav__item">
|
|
4315
|
-
<a href="#dynamic-groups-and-the-rest-api" class="md-nav__link">
|
|
4316
|
-
<span class="md-ellipsis">
|
|
4317
|
-
Dynamic Groups and the REST API
|
|
4318
|
-
</span>
|
|
4319
|
-
</a>
|
|
4320
|
-
|
|
4321
|
-
<nav class="md-nav" aria-label="Dynamic Groups and the REST API">
|
|
4322
|
-
<ul class="md-nav__list">
|
|
4323
|
-
|
|
4324
|
-
<li class="md-nav__item">
|
|
4325
|
-
<a href="#specifying-filter-conditions" class="md-nav__link">
|
|
4326
|
-
<span class="md-ellipsis">
|
|
4327
|
-
Specifying Filter Conditions
|
|
4328
|
-
</span>
|
|
4329
|
-
</a>
|
|
4330
|
-
|
|
4331
|
-
<nav class="md-nav" aria-label="Specifying Filter Conditions">
|
|
4332
|
-
<ul class="md-nav__list">
|
|
4333
|
-
|
|
4334
|
-
<li class="md-nav__item">
|
|
4335
|
-
<a href="#multiple-values" class="md-nav__link">
|
|
4336
|
-
<span class="md-ellipsis">
|
|
4337
|
-
Multiple Values
|
|
4338
|
-
</span>
|
|
4339
|
-
</a>
|
|
4340
|
-
|
|
4341
|
-
</li>
|
|
4342
|
-
|
|
4343
|
-
<li class="md-nav__item">
|
|
4344
|
-
<a href="#single-values" class="md-nav__link">
|
|
4345
|
-
<span class="md-ellipsis">
|
|
4346
|
-
Single Values
|
|
4347
|
-
</span>
|
|
4348
|
-
</a>
|
|
4349
|
-
|
|
4350
|
-
</li>
|
|
4351
|
-
|
|
4352
|
-
<li class="md-nav__item">
|
|
4353
|
-
<a href="#field-validation" class="md-nav__link">
|
|
4354
|
-
<span class="md-ellipsis">
|
|
4355
|
-
Field Validation
|
|
4356
|
-
</span>
|
|
4357
|
-
</a>
|
|
4358
|
-
|
|
4359
|
-
</li>
|
|
4360
|
-
|
|
4361
|
-
</ul>
|
|
4362
|
-
</nav>
|
|
4788
|
+
|
|
4363
4789
|
|
|
4364
|
-
</li>
|
|
4365
|
-
|
|
4366
|
-
<li class="md-nav__item">
|
|
4367
|
-
<a href="#managing-dynamic-groups" class="md-nav__link">
|
|
4368
|
-
<span class="md-ellipsis">
|
|
4369
|
-
Managing Dynamic Groups
|
|
4370
|
-
</span>
|
|
4371
|
-
</a>
|
|
4372
4790
|
|
|
4373
|
-
<nav class="md-nav" aria-label="Managing Dynamic Groups">
|
|
4374
|
-
<ul class="md-nav__list">
|
|
4375
|
-
|
|
4376
|
-
<li class="md-nav__item">
|
|
4377
|
-
<a href="#creating-a-dynamic-group" class="md-nav__link">
|
|
4378
|
-
<span class="md-ellipsis">
|
|
4379
|
-
Creating a Dynamic Group
|
|
4380
|
-
</span>
|
|
4381
|
-
</a>
|
|
4382
4791
|
|
|
4383
|
-
|
|
4792
|
+
|
|
4793
|
+
|
|
4794
|
+
|
|
4795
|
+
|
|
4796
|
+
|
|
4797
|
+
|
|
4798
|
+
|
|
4799
|
+
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
4800
|
+
|
|
4384
4801
|
|
|
4385
|
-
<li class="md-nav__item">
|
|
4386
|
-
<a href="#updating-or-deleting-a-dynamic-group" class="md-nav__link">
|
|
4387
|
-
<span class="md-ellipsis">
|
|
4388
|
-
Updating or Deleting a Dynamic Group
|
|
4389
|
-
</span>
|
|
4390
|
-
</a>
|
|
4391
|
-
|
|
4392
|
-
</li>
|
|
4393
4802
|
|
|
4394
|
-
|
|
4395
|
-
</nav>
|
|
4396
|
-
|
|
4397
|
-
</li>
|
|
4803
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_5" checked>
|
|
4398
4804
|
|
|
4399
|
-
|
|
4400
|
-
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
</a>
|
|
4805
|
+
|
|
4806
|
+
|
|
4807
|
+
<div class="md-nav__link md-nav__container">
|
|
4808
|
+
<a href="dynamicgroup.html" class="md-nav__link md-nav__link--active">
|
|
4809
|
+
|
|
4405
4810
|
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
<li class="md-nav__item">
|
|
4410
|
-
<a href="#assigning-child-groups" class="md-nav__link">
|
|
4411
|
-
<span class="md-ellipsis">
|
|
4412
|
-
Assigning Child Groups
|
|
4413
|
-
</span>
|
|
4414
|
-
</a>
|
|
4811
|
+
<span class="md-ellipsis">
|
|
4812
|
+
Dynamic Groups
|
|
4813
|
+
</span>
|
|
4415
4814
|
|
|
4416
|
-
|
|
4815
|
+
|
|
4816
|
+
</a>
|
|
4817
|
+
|
|
4818
|
+
|
|
4819
|
+
<label class="md-nav__link md-nav__link--active" for="__nav_2_4_5" id="__nav_2_4_5_label" tabindex="0">
|
|
4820
|
+
<span class="md-nav__icon md-icon"></span>
|
|
4821
|
+
</label>
|
|
4822
|
+
|
|
4823
|
+
</div>
|
|
4417
4824
|
|
|
4418
|
-
|
|
4419
|
-
|
|
4420
|
-
|
|
4421
|
-
|
|
4422
|
-
|
|
4423
|
-
|
|
4825
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_5_label" aria-expanded="true">
|
|
4826
|
+
<label class="md-nav__title" for="__nav_2_4_5">
|
|
4827
|
+
<span class="md-nav__icon md-icon"></span>
|
|
4828
|
+
Dynamic Groups
|
|
4829
|
+
</label>
|
|
4830
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
4831
|
+
|
|
4832
|
+
|
|
4833
|
+
|
|
4424
4834
|
|
|
4425
|
-
</li>
|
|
4426
|
-
|
|
4427
|
-
</ul>
|
|
4428
|
-
</nav>
|
|
4429
4835
|
|
|
4430
|
-
</li>
|
|
4431
|
-
|
|
4432
|
-
</ul>
|
|
4433
|
-
</nav>
|
|
4434
4836
|
|
|
4435
|
-
</li>
|
|
4436
|
-
|
|
4437
|
-
<li class="md-nav__item">
|
|
4438
|
-
<a href="#membership-and-caching" class="md-nav__link">
|
|
4439
|
-
<span class="md-ellipsis">
|
|
4440
|
-
Membership and Caching
|
|
4441
|
-
</span>
|
|
4442
|
-
</a>
|
|
4443
4837
|
|
|
4444
|
-
<
|
|
4445
|
-
<
|
|
4838
|
+
<li class="md-nav__item">
|
|
4839
|
+
<a href="staticgroupassociation.html" class="md-nav__link">
|
|
4446
4840
|
|
|
4447
|
-
<li class="md-nav__item">
|
|
4448
|
-
<a href="#invalidatingrefreshing-the-cache" class="md-nav__link">
|
|
4449
|
-
<span class="md-ellipsis">
|
|
4450
|
-
Invalidating/Refreshing the Cache
|
|
4451
|
-
</span>
|
|
4452
|
-
</a>
|
|
4453
4841
|
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
</nav>
|
|
4842
|
+
<span class="md-ellipsis">
|
|
4843
|
+
Static Group Associations
|
|
4844
|
+
</span>
|
|
4458
4845
|
|
|
4459
|
-
|
|
4460
|
-
|
|
4461
|
-
</
|
|
4846
|
+
|
|
4847
|
+
</a>
|
|
4848
|
+
</li>
|
|
4462
4849
|
|
|
4463
|
-
|
|
4850
|
+
|
|
4851
|
+
|
|
4852
|
+
|
|
4853
|
+
</ul>
|
|
4854
|
+
</nav>
|
|
4464
4855
|
|
|
4465
4856
|
</li>
|
|
4466
4857
|
|
|
@@ -4812,6 +5203,27 @@
|
|
|
4812
5203
|
|
|
4813
5204
|
|
|
4814
5205
|
|
|
5206
|
+
<li class="md-nav__item">
|
|
5207
|
+
<a href="objectmetadata.html" class="md-nav__link">
|
|
5208
|
+
|
|
5209
|
+
|
|
5210
|
+
<span class="md-ellipsis">
|
|
5211
|
+
Object Metadata
|
|
5212
|
+
</span>
|
|
5213
|
+
|
|
5214
|
+
|
|
5215
|
+
</a>
|
|
5216
|
+
</li>
|
|
5217
|
+
|
|
5218
|
+
|
|
5219
|
+
|
|
5220
|
+
|
|
5221
|
+
|
|
5222
|
+
|
|
5223
|
+
|
|
5224
|
+
|
|
5225
|
+
|
|
5226
|
+
|
|
4815
5227
|
<li class="md-nav__item">
|
|
4816
5228
|
<a href="relationship.html" class="md-nav__link">
|
|
4817
5229
|
|
|
@@ -4844,7 +5256,7 @@
|
|
|
4844
5256
|
|
|
4845
5257
|
|
|
4846
5258
|
|
|
4847
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
5259
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_16" >
|
|
4848
5260
|
|
|
4849
5261
|
|
|
4850
5262
|
|
|
@@ -4860,14 +5272,14 @@
|
|
|
4860
5272
|
</a>
|
|
4861
5273
|
|
|
4862
5274
|
|
|
4863
|
-
<label class="md-nav__link " for="
|
|
5275
|
+
<label class="md-nav__link " for="__nav_2_4_16" id="__nav_2_4_16_label" tabindex="0">
|
|
4864
5276
|
<span class="md-nav__icon md-icon"></span>
|
|
4865
5277
|
</label>
|
|
4866
5278
|
|
|
4867
5279
|
</div>
|
|
4868
5280
|
|
|
4869
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="
|
|
4870
|
-
<label class="md-nav__title" for="
|
|
5281
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_16_label" aria-expanded="false">
|
|
5282
|
+
<label class="md-nav__title" for="__nav_2_4_16">
|
|
4871
5283
|
<span class="md-nav__icon md-icon"></span>
|
|
4872
5284
|
REST API
|
|
4873
5285
|
</label>
|
|
@@ -4971,6 +5383,27 @@
|
|
|
4971
5383
|
|
|
4972
5384
|
|
|
4973
5385
|
|
|
5386
|
+
<li class="md-nav__item">
|
|
5387
|
+
<a href="savedview.html" class="md-nav__link">
|
|
5388
|
+
|
|
5389
|
+
|
|
5390
|
+
<span class="md-ellipsis">
|
|
5391
|
+
Saved Views
|
|
5392
|
+
</span>
|
|
5393
|
+
|
|
5394
|
+
|
|
5395
|
+
</a>
|
|
5396
|
+
</li>
|
|
5397
|
+
|
|
5398
|
+
|
|
5399
|
+
|
|
5400
|
+
|
|
5401
|
+
|
|
5402
|
+
|
|
5403
|
+
|
|
5404
|
+
|
|
5405
|
+
|
|
5406
|
+
|
|
4974
5407
|
<li class="md-nav__item">
|
|
4975
5408
|
<a href="secret.html" class="md-nav__link">
|
|
4976
5409
|
|
|
@@ -5066,10 +5499,10 @@
|
|
|
5066
5499
|
|
|
5067
5500
|
|
|
5068
5501
|
|
|
5069
|
-
<input class="md-nav__toggle md-toggle " type="checkbox" id="
|
|
5502
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_23" >
|
|
5070
5503
|
|
|
5071
5504
|
|
|
5072
|
-
<label class="md-nav__link" for="
|
|
5505
|
+
<label class="md-nav__link" for="__nav_2_4_23" id="__nav_2_4_23_label" tabindex="0">
|
|
5073
5506
|
|
|
5074
5507
|
|
|
5075
5508
|
<span class="md-ellipsis">
|
|
@@ -5080,8 +5513,8 @@
|
|
|
5080
5513
|
<span class="md-nav__icon md-icon"></span>
|
|
5081
5514
|
</label>
|
|
5082
5515
|
|
|
5083
|
-
<nav class="md-nav" data-md-level="3" aria-labelledby="
|
|
5084
|
-
<label class="md-nav__title" for="
|
|
5516
|
+
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_23_label" aria-expanded="false">
|
|
5517
|
+
<label class="md-nav__title" for="__nav_2_4_23">
|
|
5085
5518
|
<span class="md-nav__icon md-icon"></span>
|
|
5086
5519
|
Users
|
|
5087
5520
|
</label>
|
|
@@ -7629,6 +8062,27 @@
|
|
|
7629
8062
|
|
|
7630
8063
|
|
|
7631
8064
|
|
|
8065
|
+
<li class="md-nav__item">
|
|
8066
|
+
<a href="../../release-notes/version-2.3.html" class="md-nav__link">
|
|
8067
|
+
|
|
8068
|
+
|
|
8069
|
+
<span class="md-ellipsis">
|
|
8070
|
+
Version 2.3
|
|
8071
|
+
</span>
|
|
8072
|
+
|
|
8073
|
+
|
|
8074
|
+
</a>
|
|
8075
|
+
</li>
|
|
8076
|
+
|
|
8077
|
+
|
|
8078
|
+
|
|
8079
|
+
|
|
8080
|
+
|
|
8081
|
+
|
|
8082
|
+
|
|
8083
|
+
|
|
8084
|
+
|
|
8085
|
+
|
|
7632
8086
|
<li class="md-nav__item">
|
|
7633
8087
|
<a href="../../release-notes/version-2.2.html" class="md-nav__link">
|
|
7634
8088
|
|
|
@@ -8206,53 +8660,71 @@
|
|
|
8206
8660
|
<ul class="md-nav__list">
|
|
8207
8661
|
|
|
8208
8662
|
<li class="md-nav__item">
|
|
8209
|
-
<a href="#creating-dynamic-groups" class="md-nav__link">
|
|
8663
|
+
<a href="#creating-dynamic-groups-in-the-ui" class="md-nav__link">
|
|
8210
8664
|
<span class="md-ellipsis">
|
|
8211
|
-
Creating Dynamic Groups
|
|
8665
|
+
Creating Dynamic Groups in the UI
|
|
8212
8666
|
</span>
|
|
8213
8667
|
</a>
|
|
8214
8668
|
|
|
8215
8669
|
</li>
|
|
8216
8670
|
|
|
8217
8671
|
<li class="md-nav__item">
|
|
8218
|
-
<a href="#working-with-dynamic-groups" class="md-nav__link">
|
|
8672
|
+
<a href="#working-with-dynamic-groups-in-the-ui" class="md-nav__link">
|
|
8219
8673
|
<span class="md-ellipsis">
|
|
8220
|
-
Working with Dynamic Groups
|
|
8674
|
+
Working with Dynamic Groups in the UI
|
|
8221
8675
|
</span>
|
|
8222
8676
|
</a>
|
|
8223
8677
|
|
|
8224
8678
|
</li>
|
|
8225
8679
|
|
|
8226
|
-
|
|
8227
|
-
|
|
8680
|
+
</ul>
|
|
8681
|
+
</nav>
|
|
8682
|
+
|
|
8683
|
+
</li>
|
|
8684
|
+
|
|
8685
|
+
<li class="md-nav__item">
|
|
8686
|
+
<a href="#about-membership-caching" class="md-nav__link">
|
|
8687
|
+
<span class="md-ellipsis">
|
|
8688
|
+
About Membership Caching
|
|
8689
|
+
</span>
|
|
8690
|
+
</a>
|
|
8691
|
+
|
|
8692
|
+
</li>
|
|
8693
|
+
|
|
8694
|
+
<li class="md-nav__item">
|
|
8695
|
+
<a href="#dynamic-group-types" class="md-nav__link">
|
|
8228
8696
|
<span class="md-ellipsis">
|
|
8229
|
-
|
|
8697
|
+
Dynamic Group Types
|
|
8230
8698
|
</span>
|
|
8231
8699
|
</a>
|
|
8232
8700
|
|
|
8233
|
-
<nav class="md-nav" aria-label="
|
|
8701
|
+
<nav class="md-nav" aria-label="Dynamic Group Types">
|
|
8234
8702
|
<ul class="md-nav__list">
|
|
8235
8703
|
|
|
8236
8704
|
<li class="md-nav__item">
|
|
8237
|
-
<a href="#
|
|
8705
|
+
<a href="#filter-based-dynamic-groups" class="md-nav__link">
|
|
8238
8706
|
<span class="md-ellipsis">
|
|
8239
|
-
|
|
8707
|
+
Filter-Based Dynamic Groups
|
|
8240
8708
|
</span>
|
|
8241
8709
|
</a>
|
|
8242
8710
|
|
|
8243
8711
|
</li>
|
|
8244
8712
|
|
|
8245
8713
|
<li class="md-nav__item">
|
|
8246
|
-
<a href="#
|
|
8714
|
+
<a href="#set-based-dynamic-groups" class="md-nav__link">
|
|
8247
8715
|
<span class="md-ellipsis">
|
|
8248
|
-
|
|
8716
|
+
Set-Based Dynamic Groups
|
|
8249
8717
|
</span>
|
|
8250
8718
|
</a>
|
|
8251
8719
|
|
|
8252
8720
|
</li>
|
|
8253
8721
|
|
|
8254
|
-
|
|
8255
|
-
|
|
8722
|
+
<li class="md-nav__item">
|
|
8723
|
+
<a href="#static-assignment-based-dynamic-groups" class="md-nav__link">
|
|
8724
|
+
<span class="md-ellipsis">
|
|
8725
|
+
Static-Assignment-Based Dynamic Groups
|
|
8726
|
+
</span>
|
|
8727
|
+
</a>
|
|
8256
8728
|
|
|
8257
8729
|
</li>
|
|
8258
8730
|
|
|
@@ -8272,18 +8744,18 @@
|
|
|
8272
8744
|
<ul class="md-nav__list">
|
|
8273
8745
|
|
|
8274
8746
|
<li class="md-nav__item">
|
|
8275
|
-
<a href="#basic-filtering-with-a-single-dynamic-group" class="md-nav__link">
|
|
8747
|
+
<a href="#basic-filtering-with-a-single-filter-based-dynamic-group" class="md-nav__link">
|
|
8276
8748
|
<span class="md-ellipsis">
|
|
8277
|
-
Basic Filtering with a single Dynamic Group
|
|
8749
|
+
Basic Filtering with a single Filter-Based Dynamic Group
|
|
8278
8750
|
</span>
|
|
8279
8751
|
</a>
|
|
8280
8752
|
|
|
8281
8753
|
</li>
|
|
8282
8754
|
|
|
8283
8755
|
<li class="md-nav__item">
|
|
8284
|
-
<a href="#advanced-filtering-
|
|
8756
|
+
<a href="#advanced-filtering-defining-a-set-based-dynamic-group-to-combine-two-others" class="md-nav__link">
|
|
8285
8757
|
<span class="md-ellipsis">
|
|
8286
|
-
Advanced Filtering
|
|
8758
|
+
Advanced Filtering: Defining a Set-Based Dynamic Group to Combine Two Others
|
|
8287
8759
|
</span>
|
|
8288
8760
|
</a>
|
|
8289
8761
|
|
|
@@ -8413,28 +8885,28 @@
|
|
|
8413
8885
|
</li>
|
|
8414
8886
|
|
|
8415
8887
|
<li class="md-nav__item">
|
|
8416
|
-
<a href="#managing-dynamic-groups" class="md-nav__link">
|
|
8888
|
+
<a href="#managing-dynamic-groups-in-the-rest-api" class="md-nav__link">
|
|
8417
8889
|
<span class="md-ellipsis">
|
|
8418
|
-
Managing Dynamic Groups
|
|
8890
|
+
Managing Dynamic Groups in the REST API
|
|
8419
8891
|
</span>
|
|
8420
8892
|
</a>
|
|
8421
8893
|
|
|
8422
|
-
<nav class="md-nav" aria-label="Managing Dynamic Groups">
|
|
8894
|
+
<nav class="md-nav" aria-label="Managing Dynamic Groups in the REST API">
|
|
8423
8895
|
<ul class="md-nav__list">
|
|
8424
8896
|
|
|
8425
8897
|
<li class="md-nav__item">
|
|
8426
|
-
<a href="#creating-a-dynamic-group" class="md-nav__link">
|
|
8898
|
+
<a href="#creating-a-dynamic-group-via-rest" class="md-nav__link">
|
|
8427
8899
|
<span class="md-ellipsis">
|
|
8428
|
-
Creating a Dynamic Group
|
|
8900
|
+
Creating a Dynamic Group via REST
|
|
8429
8901
|
</span>
|
|
8430
8902
|
</a>
|
|
8431
8903
|
|
|
8432
8904
|
</li>
|
|
8433
8905
|
|
|
8434
8906
|
<li class="md-nav__item">
|
|
8435
|
-
<a href="#updating-or-deleting-a-dynamic-group" class="md-nav__link">
|
|
8907
|
+
<a href="#updating-or-deleting-a-dynamic-group-via-rest" class="md-nav__link">
|
|
8436
8908
|
<span class="md-ellipsis">
|
|
8437
|
-
Updating or Deleting a Dynamic Group
|
|
8909
|
+
Updating or Deleting a Dynamic Group via REST
|
|
8438
8910
|
</span>
|
|
8439
8911
|
</a>
|
|
8440
8912
|
|
|
@@ -8446,28 +8918,28 @@
|
|
|
8446
8918
|
</li>
|
|
8447
8919
|
|
|
8448
8920
|
<li class="md-nav__item">
|
|
8449
|
-
<a href="#managing-child-groups" class="md-nav__link">
|
|
8921
|
+
<a href="#managing-child-groups-via-rest" class="md-nav__link">
|
|
8450
8922
|
<span class="md-ellipsis">
|
|
8451
|
-
Managing Child Groups
|
|
8923
|
+
Managing Child Groups via REST
|
|
8452
8924
|
</span>
|
|
8453
8925
|
</a>
|
|
8454
8926
|
|
|
8455
|
-
<nav class="md-nav" aria-label="Managing Child Groups">
|
|
8927
|
+
<nav class="md-nav" aria-label="Managing Child Groups via REST">
|
|
8456
8928
|
<ul class="md-nav__list">
|
|
8457
8929
|
|
|
8458
8930
|
<li class="md-nav__item">
|
|
8459
|
-
<a href="#assigning-child-groups" class="md-nav__link">
|
|
8931
|
+
<a href="#assigning-child-groups-via-rest" class="md-nav__link">
|
|
8460
8932
|
<span class="md-ellipsis">
|
|
8461
|
-
Assigning Child Groups
|
|
8933
|
+
Assigning Child Groups via REST
|
|
8462
8934
|
</span>
|
|
8463
8935
|
</a>
|
|
8464
8936
|
|
|
8465
8937
|
</li>
|
|
8466
8938
|
|
|
8467
8939
|
<li class="md-nav__item">
|
|
8468
|
-
<a href="#updating-or-deleting-child-groups" class="md-nav__link">
|
|
8940
|
+
<a href="#updating-or-deleting-child-groups-via-rest" class="md-nav__link">
|
|
8469
8941
|
<span class="md-ellipsis">
|
|
8470
|
-
Updating or Deleting Child Groups
|
|
8942
|
+
Updating or Deleting Child Groups via REST
|
|
8471
8943
|
</span>
|
|
8472
8944
|
</a>
|
|
8473
8945
|
|
|
@@ -8484,19 +8956,37 @@
|
|
|
8484
8956
|
</li>
|
|
8485
8957
|
|
|
8486
8958
|
<li class="md-nav__item">
|
|
8487
|
-
<a href="#
|
|
8959
|
+
<a href="#dynamic-groups-and-the-python-api-django-orm" class="md-nav__link">
|
|
8488
8960
|
<span class="md-ellipsis">
|
|
8489
|
-
|
|
8961
|
+
Dynamic Groups and the Python API (Django ORM)
|
|
8490
8962
|
</span>
|
|
8491
8963
|
</a>
|
|
8492
8964
|
|
|
8493
|
-
<nav class="md-nav" aria-label="
|
|
8965
|
+
<nav class="md-nav" aria-label="Dynamic Groups and the Python API (Django ORM)">
|
|
8494
8966
|
<ul class="md-nav__list">
|
|
8495
8967
|
|
|
8496
8968
|
<li class="md-nav__item">
|
|
8497
|
-
<a href="#
|
|
8969
|
+
<a href="#working-with-a-dynamic-groups-members" class="md-nav__link">
|
|
8970
|
+
<span class="md-ellipsis">
|
|
8971
|
+
Working with a Dynamic Group's Members
|
|
8972
|
+
</span>
|
|
8973
|
+
</a>
|
|
8974
|
+
|
|
8975
|
+
</li>
|
|
8976
|
+
|
|
8977
|
+
<li class="md-nav__item">
|
|
8978
|
+
<a href="#working-with-an-objects-containing-dynamic-groups" class="md-nav__link">
|
|
8979
|
+
<span class="md-ellipsis">
|
|
8980
|
+
Working with an Object's Containing Dynamic Groups
|
|
8981
|
+
</span>
|
|
8982
|
+
</a>
|
|
8983
|
+
|
|
8984
|
+
</li>
|
|
8985
|
+
|
|
8986
|
+
<li class="md-nav__item">
|
|
8987
|
+
<a href="#refreshing-the-cache" class="md-nav__link">
|
|
8498
8988
|
<span class="md-ellipsis">
|
|
8499
|
-
|
|
8989
|
+
Refreshing the Cache
|
|
8500
8990
|
</span>
|
|
8501
8991
|
</a>
|
|
8502
8992
|
|
|
@@ -8529,45 +9019,84 @@
|
|
|
8529
9019
|
<details class="version-added">
|
|
8530
9020
|
<summary>Added in version 1.3.0</summary>
|
|
8531
9021
|
</details>
|
|
8532
|
-
<p>Dynamic Groups provide a way to
|
|
8533
|
-
<p>
|
|
8534
|
-
<
|
|
9022
|
+
<p>Dynamic Groups provide a general-purpose way to collect related objects of a given Content Type, such as Devices associated with a given Location(s) and Status(es), Circuits attached to a given set of Devices, and so forth. A given Dynamic Group may contain any number of objects of the appropriate type as members, and an object may belong to any number of Dynamic Groups of the appropriate content-type as a member of each. It is possible both to query the members of a given Dynamic Group, and also to query which Dynamic Groups a given object is a member of.</p>
|
|
9023
|
+
<p>There are currently three ways to define the object members of a Dynamic group:</p>
|
|
9024
|
+
<ol>
|
|
9025
|
+
<li>Filter-based assignment (for example, "All Devices with Location X and Status Y")</li>
|
|
9026
|
+
<li>Set-based assignment from other defined groups (for example, "All devices in Group A or Group B but not Group C")</li>
|
|
9027
|
+
<li>Static assignment directly to the group (for example, "Device XYZ01, Device XYZ02, and Device XYZ04")</li>
|
|
9028
|
+
</ol>
|
|
9029
|
+
<details class="version-added">
|
|
9030
|
+
<summary>Added in version 1.4.0 — Set-based group assignment</summary>
|
|
9031
|
+
<p>Support for set-based assignment to groups was added.</p>
|
|
9032
|
+
</details>
|
|
9033
|
+
<details class="version-added">
|
|
9034
|
+
<summary>Added in version 2.3.0 — Static group assignment</summary>
|
|
9035
|
+
<p>Support for static assignment to groups was added, and the distinction between filter-based and set-based assignment was formally established.</p>
|
|
9036
|
+
</details>
|
|
9037
|
+
<p>The members of each Dynamic Group are cached and tracked by <a href="staticgroupassociation.html">Static Group Association</a> database records.</p>
|
|
8535
9038
|
<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">¶</a></h2>
|
|
8536
|
-
<h3 id="creating-dynamic-groups">Creating Dynamic Groups<a class="headerlink" href="#creating-dynamic-groups" title="Permanent link">¶</a></h3>
|
|
8537
|
-
<p>Dynamic Groups can be created through the UI under <em>Organization > Dynamic Groups</em> and clicking the "Add" button
|
|
8538
|
-
<p>
|
|
8539
|
-
<
|
|
9039
|
+
<h3 id="creating-dynamic-groups-in-the-ui">Creating Dynamic Groups in the UI<a class="headerlink" href="#creating-dynamic-groups-in-the-ui" title="Permanent link">¶</a></h3>
|
|
9040
|
+
<p>Dynamic Groups can be created through the UI under <em>Organization > Groups > Dynamic Groups</em> and clicking the "Add" button.</p>
|
|
9041
|
+
<p>When creating a Dynamic Group, you must provide a unique <strong>Name</strong> for the group, select an <strong>Object Type</strong> (also known as content-type) of the objects that it will contain as members, for example <code>dcim.device</code>, and also select a <strong>Group Type</strong>, specifying which of the supported member assignment patterns will apply to this group. (Any given Dynamic Group can only use one such pattern; mixing assignment types within a single group is not permitted at this time.) You can also optionally provide a <strong>Description</strong> for the group, select a <a href="../core-data-model/tenancy/tenant.html"><strong>Tenant</strong></a> that the group applies to, and/or apply <a href="tag.html"><strong>Tags</strong></a> to it.</p>
|
|
9042
|
+
<details class="version-added">
|
|
9043
|
+
<summary>Added in version 2.3.0 — Tenant and tags</summary>
|
|
9044
|
+
<p>Support for assigning a tenant and/or tags to a Dynamic Group was added.</p>
|
|
9045
|
+
</details>
|
|
8540
9046
|
<div class="admonition warning">
|
|
8541
9047
|
<p class="admonition-title">Warning</p>
|
|
8542
|
-
<p>
|
|
9048
|
+
<p>After initial creation, the Content Type for a Dynamic Group may not be modified, as doing so would invalidate the filter, set definition, or static assignments of members for this group. Similarly, the Group Type also generally may not be modified, except in a few specific cases that are permitted for backwards compatibility with the behavior of Dynamic Groups before an explicit Group Type field was added to the model. All other fields may be updated at any time.</p>
|
|
8543
9049
|
</div>
|
|
8544
|
-
<
|
|
8545
|
-
<
|
|
9050
|
+
<p>Once a new Dynamic Group is created, the group membership can be configured by clicking the "Edit" button to specify <strong>Filter Fields</strong> or <strong>Child Groups</strong> as appropriate to the Group Type, or, for static membership, by navigating to the object list view and selecting the objects to add to the group. More on these options below.</p>
|
|
9051
|
+
<h3 id="working-with-dynamic-groups-in-the-ui">Working with Dynamic Groups in the UI<a class="headerlink" href="#working-with-dynamic-groups-in-the-ui" title="Permanent link">¶</a></h3>
|
|
9052
|
+
<p>Once created and configured, Dynamic Groups can be accessed from the primary Dynamic Groups landing page in the web interface under the <em>Organization > Groups > Dynamic Groups</em> menu. From there you may view the list of available groups, search or filter the list, view or edit an individual group, or bulk delete groups. Additionally if a group has any members, you can click on the members count in the Dynamic Groups list view to display the full list of members for that Dynamic Group.</p>
|
|
8546
9053
|
<p>Dynamic Groups cannot be imported nor can they be updated in bulk, as these operations would be complex and do not make sense in most cases.</p>
|
|
8547
9054
|
<p>From an individual object's detail page, if it is a member of any groups, a "Dynamic Groups" tab will display in the navigation tabs. Clicking that tab will display all Dynamic Groups of which this object is a member.</p>
|
|
8548
|
-
<
|
|
8549
|
-
<p>Dynamic Group
|
|
8550
|
-
<p>
|
|
9055
|
+
<h2 id="about-membership-caching">About Membership Caching<a class="headerlink" href="#about-membership-caching" title="Permanent link">¶</a></h2>
|
|
9056
|
+
<p>Since looking up the members of a filter-based or set-based Dynamic Group can potentially involve an expensive set of database queries depending on the complexity of the group definition, Nautobot internally caches the members of these group types using the same <a href="staticgroupassociation.html">Static Group Association</a> database table that also records the members of statically-defined Dynamic Groups. In particular, this implementation greatly speeds up the "reverse lookup" pattern where, given an individual object, the user needs to identify all Dynamic Groups that it is a member of.</p>
|
|
9057
|
+
<p>Creating, updating, or deleting a Dynamic Group will automatically refresh the cache with the new membership information for this group, as will viewing the "detail view" of any given Dynamic Group.</p>
|
|
9058
|
+
<p>If you need to refresh the membership cache for all Dynamic Groups, you can do so by running the management command <code>nautobot-server refresh_dynamic_group_member_caches</code>. This will clear and repopulate the cache for all Dynamic Groups.</p>
|
|
9059
|
+
<p>You can also refresh the cache for one or all Dynamic Groups by running the <code>Refresh Dynamic Group Caches</code> system <a href="jobs/index.html">Job</a>. You may find it useful to define a schedule for this job such that it automatically refreshes these caches periodically, such as every 15 minutes or every day, depending on your needs.</p>
|
|
9060
|
+
<div class="admonition warning">
|
|
9061
|
+
<p class="admonition-title">Warning</p>
|
|
9062
|
+
<p>Creating or updating other objects (candidate group members and/or objects that are referenced by a Dynamic Group's filters) will <strong>not</strong> automatically refresh these caches.</p>
|
|
9063
|
+
</div>
|
|
9064
|
+
<h2 id="dynamic-group-types">Dynamic Group Types<a class="headerlink" href="#dynamic-group-types" title="Permanent link">¶</a></h2>
|
|
9065
|
+
<h3 id="filter-based-dynamic-groups">Filter-Based Dynamic Groups<a class="headerlink" href="#filter-based-dynamic-groups" title="Permanent link">¶</a></h3>
|
|
9066
|
+
<p>Assignment of objects to a filter-based Dynamic Group is powered by Nautobot <strong>FilterSet</strong> classes underneath the hood. The <a href="https://django-filter.readthedocs.io/en/stable/">django-filter</a> documentation may be a useful reference for users wanting to develop an in-depth understanding of FilterSets, but is by no means required to understand Dynamic Groups.</p>
|
|
9067
|
+
<p>A filter-based Dynamic Group defines a <code>filter</code> field, which is stored in the database as a JSON dict. An object is considered to be a member of such a Dynamic Group if it has the correct Content Type and it is not excluded by the filter criteria defined by the group. By default, a freshly created Dynamic Group has an empty filter (<code>{}</code>), which means that all objects of the matching Content Type are members of this group, just as a default list view of these objects would display all such objects prior to any filter fields being selected in the web UI.</p>
|
|
8551
9068
|
<p>For example, for a Dynamic Group with Content Type of <code>dcim.device</code> and an empty filter, the list of members would be equivalent to the default Device list view, which in turn is equivalent to the queryset for <code>Device.objects.all()</code> from the database ORM.</p>
|
|
8552
9069
|
<details class="version-changed">
|
|
8553
|
-
<summary>Changed in version 1.4.0</summary>
|
|
9070
|
+
<summary>Changed in version 1.4.0 — Change in empty filter behavior</summary>
|
|
8554
9071
|
<p>In Nautobot v1.3.0 the default for a Dynamic Group with an empty filter was to "fail closed" and have zero members.</p>
|
|
8555
9072
|
<p>As of v1.4.0, this behavior has been inverted to default to include all objects matching the Content Type, instead of matching no objects as was previously the case. This was necessary to implement the progressive layering of child filters similarly to how we use filters to reduce desired objects from basic list view filters. This will be described in more detail below.</p>
|
|
8556
9073
|
</details>
|
|
8557
|
-
<
|
|
8558
|
-
<
|
|
8559
|
-
<h4 id="advanced-filtering">Advanced Filtering<a class="headerlink" href="#advanced-filtering" title="Permanent link">¶</a></h4>
|
|
9074
|
+
<p>When editing a filter-based Dynamic Group, under the <strong>Filter Options</strong> section, you will find a <strong>Filter Fields</strong> tab that allows you to select filter criteria. The filter fields available for a given Content Type are backed and validated by underlying FilterSet classes (for example <code>nautobot.dcim.filters.DeviceFilterSet</code>) and are represented in the web interface as a dynamically-generated filter form that corresponds to each eligible filter field.</p>
|
|
9075
|
+
<h3 id="set-based-dynamic-groups">Set-Based Dynamic Groups<a class="headerlink" href="#set-based-dynamic-groups" title="Permanent link">¶</a></h3>
|
|
8560
9076
|
<details class="version-added">
|
|
8561
9077
|
<summary>Added in version 1.4.0</summary>
|
|
8562
9078
|
</details>
|
|
8563
|
-
<p>
|
|
8564
|
-
<
|
|
8565
|
-
<p
|
|
9079
|
+
<p>Set-based Dynamic Groups do not directly define a filter for identifying member objects; instead, they define their members based on set operations (AND, OR, and NOT, or Union, Intersection, and Difference if you prefer) involving <em>other</em> Dynamic Groups.</p>
|
|
9080
|
+
<div class="admonition tip">
|
|
9081
|
+
<p class="admonition-title">Tip</p>
|
|
9082
|
+
<p>At this time, a set-based Dynamic Group may include filter-based Dynamic Groups and other set-based Dynamic Groups in its members definition, but set-based Dynamic Groups <em>may not</em> currently include static-assignment-based Dynamic Groups. This restriction may be removed in a future Nautobot release.</p>
|
|
9083
|
+
</div>
|
|
9084
|
+
<p>An object is considered a member of an set-based Dynamic Group if it matches the aggregated filter criteria derived from the "child" or "descendant" groups included in this group definition. The immediate descendants of a Dynamic Group are accessible through its <code>.children</code> attribute, but if the children are also set-based Dynamic Groups, then they may have their own descendants as well, and so forth. The many-to-many mapping of "parent" to "child" Dynamic Groups is implemented via a "through table" of <code>DynamicGroupMembership</code> records.</p>
|
|
9085
|
+
<div class="admonition info">
|
|
9086
|
+
<p class="admonition-title">Info</p>
|
|
9087
|
+
<p>The name "Dynamic Group Membership" is potentially confusing -- it does <em>not</em> describe the member objects (devices, IP addresses, etc.) of a Dynamic Group (that's the "Static Group Association" table, described below, used for static-assignment-based groups and caching); rather, this table defines the association between each set-based Dynamic Group and the other Dynamic Groups that are its "children".</p>
|
|
9088
|
+
</div>
|
|
9089
|
+
<p>When editing a set-based Dynamic Group, under the <strong>Filter Options</strong> section, you will find a <strong>Child Groups</strong> tab that allows you to select other Dynamic Groups of the same Content Type to be "children" of this "parent" group and how they will be used to select or exclude candidate objects from the "parent" group's members.</p>
|
|
8566
9090
|
<p><img alt="Child Groups" src="../../media/models/dynamicgroup_filtering_01.png" /></p>
|
|
9091
|
+
<h3 id="static-assignment-based-dynamic-groups">Static-Assignment-Based Dynamic Groups<a class="headerlink" href="#static-assignment-based-dynamic-groups" title="Permanent link">¶</a></h3>
|
|
9092
|
+
<details class="version-added">
|
|
9093
|
+
<summary>Added in version 2.3.0</summary>
|
|
9094
|
+
</details>
|
|
9095
|
+
<p>Unlike the other types of Dynamic Groups, the members of a static-assignment-based Dynamic Group are not automatically derived by Nautobot, but instead are each explicitly assigned to such a group. Each association of a given object into a given static-assignment-based Dynamic Group is recorded by a <a href="staticgroupassociation.html">Static Group Association</a> database record. Individual objects can be associated to these Dynamic Groups in the object's create/edit form, but in most cases it's easier and quicker to bulk-update a set of objects from their appropriate list/table view via the "Update Group Assignment" button.</p>
|
|
8567
9096
|
<h2 id="example-workflow">Example Workflow<a class="headerlink" href="#example-workflow" title="Permanent link">¶</a></h2>
|
|
8568
9097
|
<p>Dynamic Groups are a complex topic and are perhaps best understood through a series of worked examples.</p>
|
|
8569
|
-
<h3 id="basic-filtering-with-a-single-dynamic-group">Basic Filtering with a single Dynamic Group<a class="headerlink" href="#basic-filtering-with-a-single-dynamic-group" title="Permanent link">¶</a></h3>
|
|
8570
|
-
<p>Let's say you want to create a Dynamic Group that contains all production Devices at your first two Locations. You can create a Dynamic Group
|
|
9098
|
+
<h3 id="basic-filtering-with-a-single-filter-based-dynamic-group">Basic Filtering with a single Filter-Based Dynamic Group<a class="headerlink" href="#basic-filtering-with-a-single-filter-based-dynamic-group" title="Permanent link">¶</a></h3>
|
|
9099
|
+
<p>Let's say you want to create a Dynamic Group that contains all production Devices at your first two Locations. You can create a Dynamic Group named "Devices at Locations A and B", for Content Type <code>dcim | device</code>, with Group Type "Filter-based membership", then edit it and set the <strong>Filter Fields</strong> to match:</p>
|
|
8571
9100
|
<ol>
|
|
8572
9101
|
<li>a Location of either "AMS01" or "BKK01"</li>
|
|
8573
9102
|
<li>a Status of "Active" or "Offline"</li>
|
|
@@ -8589,7 +9118,7 @@
|
|
|
8589
9118
|
<p class="admonition-title">Note</p>
|
|
8590
9119
|
<p>Keep in mind that the <code>Filter Query Logic</code> will also contain any descendants of the selected model instance. As we can see above the <code>Filter Query Logic</code> uses both location "BKK01" and "AMSO1" and their descendants.</p>
|
|
8591
9120
|
</div>
|
|
8592
|
-
<h3 id="advanced-filtering-
|
|
9121
|
+
<h3 id="advanced-filtering-defining-a-set-based-dynamic-group-to-combine-two-others">Advanced Filtering: Defining a Set-Based Dynamic Group to Combine Two Others<a class="headerlink" href="#advanced-filtering-defining-a-set-based-dynamic-group-to-combine-two-others" title="Permanent link">¶</a></h3>
|
|
8593
9122
|
<details class="version-added">
|
|
8594
9123
|
<summary>Added in version 1.4.0</summary>
|
|
8595
9124
|
</details>
|
|
@@ -8606,8 +9135,8 @@
|
|
|
8606
9135
|
<a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a> )
|
|
8607
9136
|
<a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a>)
|
|
8608
9137
|
</code></pre></div>
|
|
8609
|
-
<p>This logic is too complex to express directly via a single Dynamic Group, but fear not! This is what combining Dynamic Groups allows you to do.</p>
|
|
8610
|
-
<p>First,
|
|
9138
|
+
<p>This logic is too complex to express directly via a single Dynamic Group, but fear not! This is what combining Dynamic Groups via a set-based group allows you to do.</p>
|
|
9139
|
+
<p>First, create a new "Devices of Interest" group, again of Content Type "dcim | device", but this time select "Set-based membership" as the Group Type. Edit this group, and instead of specifying <strong>Filter Fields</strong>, you will instead use the <strong>Child Groups</strong> tab of the editor, select the operator "Include (OR)" and the group "Devices at Locations A and B", and update the group.</p>
|
|
8611
9140
|
<p><img alt="Creating a Parent Group" src="../../media/models/dynamicgroup_workflow_advanced_1_01.png" /></p>
|
|
8612
9141
|
<p>In the new group's detail view, you can see that it now contains one child group, "Devices at Locations A and B", and its members are exactly the same as those of that group. But we're not done yet!</p>
|
|
8613
9142
|
<p><img alt="Resulting Parent Group" src="../../media/models/dynamicgroup_workflow_advanced_1_02.png" /></p>
|
|
@@ -8676,7 +9205,7 @@
|
|
|
8676
9205
|
<p><img alt="Final Group Members" src="../../media/models/dynamicgroup_workflow_advanced_2_07.png" /></p>
|
|
8677
9206
|
<h2 id="technical-details">Technical Details<a class="headerlink" href="#technical-details" title="Permanent link">¶</a></h2>
|
|
8678
9207
|
<h3 id="filter-generation">Filter Generation<a class="headerlink" href="#filter-generation" title="Permanent link">¶</a></h3>
|
|
8679
|
-
<p>Filters are always processed
|
|
9208
|
+
<p>Filters are always processed hierarchically from the top down starting from the parent group and descending recursively to the last nested child group in order by the <code>weight</code> value assigned to that group when it was associated to its parent.</p>
|
|
8680
9209
|
<div class="admonition note">
|
|
8681
9210
|
<p class="admonition-title">Note</p>
|
|
8682
9211
|
<p>For the purpose illustration, we will use "left to right" terminology since when verbally describing precedence in English, we read from left to right, so that following it will be more intuitive.</p>
|
|
@@ -8786,7 +9315,10 @@
|
|
|
8786
9315
|
<a id="__codelineno-9-11" name="__codelineno-9-11" href="#__codelineno-9-11"></a>)
|
|
8787
9316
|
</code></pre></div>
|
|
8788
9317
|
<h2 id="dynamic-groups-and-the-rest-api">Dynamic Groups and the REST API<a class="headerlink" href="#dynamic-groups-and-the-rest-api" title="Permanent link">¶</a></h2>
|
|
8789
|
-
<p>Dynamic Groups are fully supported by the API.
|
|
9318
|
+
<p>Dynamic Groups are fully supported by the API. There are several distinct endpoints for accessing different aspects of this feature</p>
|
|
9319
|
+
<p>The REST API endpints under <code>/api/extras/dynamic-groups/</code> are used to perform standard CRUD (Create/Retrieve/Update/Delete) operations on Dynamic Group definitions. There is also a special read-only endpoint <code>/api/extras/dynamic-groups/<group UUID>/members/</code> that returns a serialized list of a group's member objects; for example, for a Dynamic Group of Prefixes, this endpoint would return the list of Prefix objects contained in this group.</p>
|
|
9320
|
+
<p>A second set of endpoints, <code>/api/extras/dynamic-group-memberships/</code>, provides CRUD functionality for the Dynamic Group Membership through table that manages the definition of a set-based Dynamic Group.</p>
|
|
9321
|
+
<p>A third set of endpoints, <code>/api/extras/static-group-associations/</code>, provides CRUD functionality for the <a href="staticgroupassociation.html">Static Group Association</a> through table that manages the assignment of members to a static-membership Dynamic Group.</p>
|
|
8790
9322
|
<h3 id="specifying-filter-conditions">Specifying Filter Conditions<a class="headerlink" href="#specifying-filter-conditions" title="Permanent link">¶</a></h3>
|
|
8791
9323
|
<p>Dynamic Groups are fairly straightforward however it is important to understand how the <code>filter</code> field works before digging in.</p>
|
|
8792
9324
|
<p>The <code>filter</code> is a JSON field and it must be able to be used as valid query parameters for filtering objects of the corresponding Content Type.</p>
|
|
@@ -8824,16 +9356,16 @@
|
|
|
8824
9356
|
<p>Prior to v1.4.0, any invalid field names that are not eligible for filtering objects will be discarded upon validation.</p>
|
|
8825
9357
|
<p>As of v1.4.0, <a href="../administration/configuration/optional-settings.html#strict_filtering">strict filtering is enabled by default</a>, which causes any invalid field names to result in a <code>ValidationError</code>.</p>
|
|
8826
9358
|
</details>
|
|
8827
|
-
<h3 id="managing-dynamic-groups">Managing Dynamic Groups<a class="headerlink" href="#managing-dynamic-groups" title="Permanent link">¶</a></h3>
|
|
8828
|
-
<h4 id="creating-a-dynamic-group">Creating a Dynamic Group<a class="headerlink" href="#creating-a-dynamic-group" title="Permanent link">¶</a></h4>
|
|
9359
|
+
<h3 id="managing-dynamic-groups-in-the-rest-api">Managing Dynamic Groups in the REST API<a class="headerlink" href="#managing-dynamic-groups-in-the-rest-api" title="Permanent link">¶</a></h3>
|
|
9360
|
+
<h4 id="creating-a-dynamic-group-via-rest">Creating a Dynamic Group via REST<a class="headerlink" href="#creating-a-dynamic-group-via-rest" title="Permanent link">¶</a></h4>
|
|
8829
9361
|
<p>A Dynamic Group may be created by performing a <code>POST</code> to the Dynamic Groups list endpoint at <code>/api/extras/dynamic-groups/</code>.</p>
|
|
8830
9362
|
<div class="admonition note">
|
|
8831
9363
|
<p class="admonition-title">Note</p>
|
|
8832
|
-
<p>The <code>filter</code> field will default to an empty filter (<code>{}</code>) if not provided.</p>
|
|
9364
|
+
<p>The <code>group_type</code> field defaults to <code>dynamic-filter</code> (i.e., filter-based membership) if unspecified, and similarly the <code>filter</code> field will default to an empty filter (<code>{}</code>) if not provided.</p>
|
|
8833
9365
|
</div>
|
|
8834
9366
|
<div class="admonition important">
|
|
8835
9367
|
<p class="admonition-title">Important</p>
|
|
8836
|
-
<p>It is not possible to perform a nested assignment of <code>children</code> when creating a new Dynamic Group. You must first create the new group and then use the endpoint for creating Dynamic Group Memberships as explained below under <a href="#assigning-child-groups">Assigning Child Groups</a>.</p>
|
|
9368
|
+
<p>It is not possible to perform a nested assignment of <code>children</code> when creating a new Dynamic Group. You must first create the new group and then use the endpoint for creating Dynamic Group Memberships as explained below under <a href="#assigning-child-groups-via-rest">Assigning Child Groups via REST</a>.</p>
|
|
8837
9369
|
</div>
|
|
8838
9370
|
<p>Request:</p>
|
|
8839
9371
|
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="err">POST</span><span class="w"> </span><span class="err">/api/ex</span><span class="kc">tras</span><span class="err">/dy</span><span class="kc">na</span><span class="err">mic</span><span class="mi">-</span><span class="err">groups/</span>
|
|
@@ -8842,7 +9374,7 @@
|
|
|
8842
9374
|
<a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"parent"</span><span class="p">,</span>
|
|
8843
9375
|
<a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a><span class="w"> </span><span class="nt">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"I am a parent group with nested children."</span><span class="p">,</span>
|
|
8844
9376
|
<a id="__codelineno-14-6" name="__codelineno-14-6" href="#__codelineno-14-6"></a><span class="w"> </span><span class="nt">"content-type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"dcim.device"</span><span class="p">,</span>
|
|
8845
|
-
<a id="__codelineno-14-7" name="__codelineno-14-7" href="#__codelineno-14-7"></a><span class="w"> </span><span class="nt">"
|
|
9377
|
+
<a id="__codelineno-14-7" name="__codelineno-14-7" href="#__codelineno-14-7"></a><span class="w"> </span><span class="nt">"group-type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"dynamic-filter"</span><span class="p">,</span>
|
|
8846
9378
|
<a id="__codelineno-14-8" name="__codelineno-14-8" href="#__codelineno-14-8"></a><span class="p">}</span>
|
|
8847
9379
|
</code></pre></div>
|
|
8848
9380
|
<p>Response:</p>
|
|
@@ -8853,211 +9385,152 @@
|
|
|
8853
9385
|
<a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"parent"</span><span class="p">,</span>
|
|
8854
9386
|
<a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a><span class="w"> </span><span class="nt">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"I am the parent group with nested children."</span><span class="p">,</span>
|
|
8855
9387
|
<a id="__codelineno-15-7" name="__codelineno-15-7" href="#__codelineno-15-7"></a><span class="w"> </span><span class="nt">"content_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"dcim.device"</span><span class="p">,</span>
|
|
8856
|
-
<a id="__codelineno-15-8" name="__codelineno-15-8" href="#__codelineno-15-8"></a><span class="w"> </span><span class="nt">"
|
|
8857
|
-
<a id="__codelineno-15-9" name="__codelineno-15-9" href="#__codelineno-15-9"></a><span class="w"> </span><span class="nt">"
|
|
8858
|
-
<a id="__codelineno-15-10" name="__codelineno-15-10" href="#__codelineno-15-10"></a><span class="w"> </span><span class="nt">"
|
|
8859
|
-
<a id="__codelineno-15-11" name="__codelineno-15-11" href="#__codelineno-15-11"></a><span class="w"> </span><span class="nt">"
|
|
8860
|
-
<a id="__codelineno-15-12" name="__codelineno-15-12" href="#__codelineno-15-12"></a><span class="w"> </span><span class="nt">"
|
|
8861
|
-
<a id="__codelineno-15-13" name="__codelineno-15-13" href="#__codelineno-15-13"></a><span class="w"> </span><span class="nt">"
|
|
8862
|
-
<a id="__codelineno-15-14" name="__codelineno-15-14" href="#__codelineno-15-14"></a><span class="w"> </span><span class="nt">"
|
|
8863
|
-
<a id="__codelineno-15-15" name="__codelineno-15-15" href="#__codelineno-15-15"></a><span class="p">}</span>
|
|
9388
|
+
<a id="__codelineno-15-8" name="__codelineno-15-8" href="#__codelineno-15-8"></a><span class="w"> </span><span class="nt">"group_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"dynamic-filter"</span><span class="p">,</span>
|
|
9389
|
+
<a id="__codelineno-15-9" name="__codelineno-15-9" href="#__codelineno-15-9"></a><span class="w"> </span><span class="nt">"filter"</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
|
|
9390
|
+
<a id="__codelineno-15-10" name="__codelineno-15-10" href="#__codelineno-15-10"></a><span class="w"> </span><span class="nt">"children"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
|
9391
|
+
<a id="__codelineno-15-11" name="__codelineno-15-11" href="#__codelineno-15-11"></a><span class="w"> </span><span class="nt">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2022-07-06T20:17:04.305663Z"</span><span class="p">,</span>
|
|
9392
|
+
<a id="__codelineno-15-12" name="__codelineno-15-12" href="#__codelineno-15-12"></a><span class="w"> </span><span class="nt">"last_updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2022-07-06T20:17:04.305663Z"</span><span class="p">,</span>
|
|
9393
|
+
<a id="__codelineno-15-13" name="__codelineno-15-13" href="#__codelineno-15-13"></a><span class="w"> </span><span class="nt">"custom_fields"</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
|
|
9394
|
+
<a id="__codelineno-15-14" name="__codelineno-15-14" href="#__codelineno-15-14"></a><span class="w"> </span><span class="nt">"computed_fields"</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
|
|
9395
|
+
<a id="__codelineno-15-15" name="__codelineno-15-15" href="#__codelineno-15-15"></a><span class="w"> </span><span class="nt">"relationships"</span><span class="p">:</span><span class="w"> </span><span class="p">{}</span>
|
|
9396
|
+
<a id="__codelineno-15-16" name="__codelineno-15-16" href="#__codelineno-15-16"></a><span class="p">}</span>
|
|
8864
9397
|
</code></pre></div>
|
|
8865
|
-
<h4 id="updating-or-deleting-a-dynamic-group">Updating or Deleting a Dynamic Group<a class="headerlink" href="#updating-or-deleting-a-dynamic-group" title="Permanent link">¶</a></h4>
|
|
9398
|
+
<h4 id="updating-or-deleting-a-dynamic-group-via-rest">Updating or Deleting a Dynamic Group via REST<a class="headerlink" href="#updating-or-deleting-a-dynamic-group-via-rest" title="Permanent link">¶</a></h4>
|
|
8866
9399
|
<div class="admonition important">
|
|
8867
9400
|
<p class="admonition-title">Important</p>
|
|
8868
|
-
<p>It is not possible to perform a nested update of <code>children</code> when updating a
|
|
9401
|
+
<p>It is not possible to perform a nested update of <code>children</code> when updating a Dynamic Group. You must use the endpoint for creating Dynamic Group Memberships as explained below under <a href="#updating-or-deleting-child-groups-via-rest">Updating or Deleting Child Groups via REST</a>.</p>
|
|
8869
9402
|
</div>
|
|
8870
9403
|
<p>Updating or deleting a Dynamic Group is done by sending a request to the detail endpoint for that object.</p>
|
|
8871
|
-
<p>A Dynamic Group may be updated using <code>PUT</code> or <code>PATCH</code>
|
|
8872
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="err">
|
|
9404
|
+
<p>A Dynamic Group may be updated using <code>PUT</code> or <code>PATCH</code> requests. As usual for REST, a <code>PUT</code> request requires the entire object to be described, while a <code>PATCH</code> allows for individual fields to be updated without affecting the other fields. For example if you wanted to update the <code>name</code> and the <code>description</code> together, leaving every other field with their current values as provided:</p>
|
|
9405
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="err">PATCH</span><span class="w"> </span><span class="err">/api/ex</span><span class="kc">tras</span><span class="err">/dy</span><span class="kc">na</span><span class="err">mic</span><span class="mi">-</span><span class="err">groups/</span><span class="p">{</span><span class="err">uuid</span><span class="p">}</span><span class="err">/</span>
|
|
8873
9406
|
<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a>
|
|
8874
9407
|
<a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a><span class="p">{</span>
|
|
8875
9408
|
<a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"I am the best parent group"</span><span class="p">,</span>
|
|
8876
9409
|
<a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a><span class="w"> </span><span class="nt">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"I am the best parent group with nested children."</span><span class="p">,</span>
|
|
8877
|
-
<a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a><span class="
|
|
8878
|
-
<a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a><span class="p">}</span>
|
|
8879
|
-
</code></pre></div>
|
|
8880
|
-
<p>Performing a partial update using a <code>PATCH</code> request can allow any single field to be updated without affecting the other fields. For example, if we wanted to update only the <code>name</code> for a group:</p>
|
|
8881
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="err">PATCH</span><span class="w"> </span><span class="err">/api/ex</span><span class="kc">tras</span><span class="err">/dy</span><span class="kc">na</span><span class="err">mic</span><span class="mi">-</span><span class="err">group</span><span class="mi">-</span><span class="err">memberships/</span><span class="p">{</span><span class="err">uuid</span><span class="p">}</span><span class="err">/</span>
|
|
8882
|
-
<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a>
|
|
8883
|
-
<a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a><span class="p">{</span>
|
|
8884
|
-
<a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"I am the best parent group"</span>
|
|
8885
|
-
<a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a><span class="p">}</span>
|
|
9410
|
+
<a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a><span class="p">}</span>
|
|
8886
9411
|
</code></pre></div>
|
|
8887
9412
|
<p>To delete a Dynamic Group you would send a <code>DELETE</code> request to the detail endpoint:</p>
|
|
8888
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
9413
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="err">DELETE</span><span class="w"> </span><span class="err">/api/ex</span><span class="kc">tras</span><span class="err">/dy</span><span class="kc">na</span><span class="err">mic</span><span class="mi">-</span><span class="err">groups/</span><span class="p">{</span><span class="err">uuid</span><span class="p">}</span><span class="err">/</span>
|
|
8889
9414
|
</code></pre></div>
|
|
8890
|
-
<h3 id="managing-child-groups">Managing Child Groups<a class="headerlink" href="#managing-child-groups" title="Permanent link">¶</a></h3>
|
|
8891
|
-
<p>Dynamic Groups may be
|
|
9415
|
+
<h3 id="managing-child-groups-via-rest">Managing Child Groups via REST<a class="headerlink" href="#managing-child-groups-via-rest" title="Permanent link">¶</a></h3>
|
|
9416
|
+
<p>Dynamic Groups may be added to a set-based group by creating a new Dynamic Group Membership. The act of assigning a Dynamic Group as a child to a parent group creates a Dynamic Group Membership.</p>
|
|
8892
9417
|
<p>This can be done at the list endpoint found at <code>/api/extras/dynamic-group-memberships/</code>.</p>
|
|
8893
|
-
<h4 id="assigning-child-groups">Assigning Child Groups<a class="headerlink" href="#assigning-child-groups" title="Permanent link">¶</a></h4>
|
|
9418
|
+
<h4 id="assigning-child-groups-via-rest">Assigning Child Groups via REST<a class="headerlink" href="#assigning-child-groups-via-rest" title="Permanent link">¶</a></h4>
|
|
8894
9419
|
<p>Dynamic Group Membership objects may be created, updated, or deleted just like any other object and are represented as <code>children</code> on the parent group.</p>
|
|
8895
9420
|
<div class="admonition note">
|
|
8896
9421
|
<p class="admonition-title">Note</p>
|
|
8897
9422
|
<p>When interacting with the REST API, the <code>operator</code> must be provided using the string representation that is stored in the database. The human-readable operator names (such as "Exclude (AND)" for "intersection") are not accepted.</p>
|
|
8898
9423
|
</div>
|
|
8899
9424
|
<p>Request:</p>
|
|
8900
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
8901
|
-
<a id="__codelineno-
|
|
8902
|
-
<a id="__codelineno-
|
|
8903
|
-
<a id="__codelineno-
|
|
8904
|
-
<a id="__codelineno-
|
|
8905
|
-
<a id="__codelineno-
|
|
8906
|
-
<a id="__codelineno-
|
|
8907
|
-
<a id="__codelineno-
|
|
9425
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="err">POST</span><span class="w"> </span><span class="err">/api/ex</span><span class="kc">tras</span><span class="err">/dy</span><span class="kc">na</span><span class="err">mic</span><span class="mi">-</span><span class="err">group</span><span class="mi">-</span><span class="err">memberships/</span>
|
|
9426
|
+
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a>
|
|
9427
|
+
<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a><span class="p">{</span>
|
|
9428
|
+
<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a><span class="w"> </span><span class="nt">"group"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"first-child"</span><span class="p">},</span>
|
|
9429
|
+
<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a><span class="w"> </span><span class="nt">"parent_group"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"parent"</span><span class="p">},</span>
|
|
9430
|
+
<a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a><span class="w"> </span><span class="nt">"operator"</span><span class="p">:</span><span class="w"> </span><span class="s2">"intersection"</span><span class="p">,</span>
|
|
9431
|
+
<a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a><span class="w"> </span><span class="nt">"weight"</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span>
|
|
9432
|
+
<a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a><span class="p">}</span>
|
|
8908
9433
|
</code></pre></div>
|
|
8909
9434
|
<p>Response:</p>
|
|
8910
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
8911
|
-
<a id="__codelineno-
|
|
8912
|
-
<a id="__codelineno-
|
|
8913
|
-
<a id="__codelineno-
|
|
8914
|
-
<a id="__codelineno-
|
|
8915
|
-
<a id="__codelineno-
|
|
8916
|
-
<a id="__codelineno-
|
|
8917
|
-
<a id="__codelineno-
|
|
8918
|
-
<a id="__codelineno-
|
|
8919
|
-
<a id="__codelineno-
|
|
8920
|
-
<a id="__codelineno-
|
|
8921
|
-
<a id="__codelineno-
|
|
8922
|
-
<a id="__codelineno-
|
|
8923
|
-
<a id="__codelineno-
|
|
8924
|
-
<a id="__codelineno-
|
|
8925
|
-
<a id="__codelineno-
|
|
8926
|
-
<a id="__codelineno-
|
|
8927
|
-
<a id="__codelineno-
|
|
8928
|
-
<a id="__codelineno-
|
|
8929
|
-
<a id="__codelineno-
|
|
8930
|
-
<a id="__codelineno-
|
|
9435
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="p">{</span>
|
|
9436
|
+
<a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a><span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"4c8296de-42bc-49a6-8fed-fc1b1f6b93ca"</span><span class="p">,</span>
|
|
9437
|
+
<a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a><span class="w"> </span><span class="nt">"display"</span><span class="p">:</span><span class="w"> </span><span class="s2">"parent > intersection (10) > first-child"</span><span class="p">,</span>
|
|
9438
|
+
<a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a><span class="w"> </span><span class="nt">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:6789/api/extras/dynamic-group-memberships/4c8296de-42bc-49a6-8fed-fc1b1f6b93ca/"</span><span class="p">,</span>
|
|
9439
|
+
<a id="__codelineno-19-5" name="__codelineno-19-5" href="#__codelineno-19-5"></a><span class="w"> </span><span class="nt">"group"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
|
9440
|
+
<a id="__codelineno-19-6" name="__codelineno-19-6" href="#__codelineno-19-6"></a><span class="w"> </span><span class="nt">"display"</span><span class="p">:</span><span class="w"> </span><span class="s2">"first-child"</span><span class="p">,</span>
|
|
9441
|
+
<a id="__codelineno-19-7" name="__codelineno-19-7" href="#__codelineno-19-7"></a><span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"97188a74-eddd-46d8-be41-909c1ece1d43"</span><span class="p">,</span>
|
|
9442
|
+
<a id="__codelineno-19-8" name="__codelineno-19-8" href="#__codelineno-19-8"></a><span class="w"> </span><span class="nt">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:6789/api/extras/dynamic-groups/97188a74-eddd-46d8-be41-909c1ece1d43/"</span><span class="p">,</span>
|
|
9443
|
+
<a id="__codelineno-19-9" name="__codelineno-19-9" href="#__codelineno-19-9"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"first-child"</span><span class="p">,</span>
|
|
9444
|
+
<a id="__codelineno-19-10" name="__codelineno-19-10" href="#__codelineno-19-10"></a><span class="w"> </span><span class="nt">"content_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"dcim.device"</span>
|
|
9445
|
+
<a id="__codelineno-19-11" name="__codelineno-19-11" href="#__codelineno-19-11"></a><span class="w"> </span><span class="p">},</span>
|
|
9446
|
+
<a id="__codelineno-19-12" name="__codelineno-19-12" href="#__codelineno-19-12"></a><span class="w"> </span><span class="nt">"parent_group"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
|
9447
|
+
<a id="__codelineno-19-13" name="__codelineno-19-13" href="#__codelineno-19-13"></a><span class="w"> </span><span class="nt">"display"</span><span class="p">:</span><span class="w"> </span><span class="s2">"parent"</span><span class="p">,</span>
|
|
9448
|
+
<a id="__codelineno-19-14" name="__codelineno-19-14" href="#__codelineno-19-14"></a><span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1f825078-b6dc-4b12-9463-be5a9189b03f"</span><span class="p">,</span>
|
|
9449
|
+
<a id="__codelineno-19-15" name="__codelineno-19-15" href="#__codelineno-19-15"></a><span class="w"> </span><span class="nt">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:6789/api/extras/dynamic-groups/1f825078-b6dc-4b12-9463-be5a9189b03f/"</span><span class="p">,</span>
|
|
9450
|
+
<a id="__codelineno-19-16" name="__codelineno-19-16" href="#__codelineno-19-16"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"parent"</span><span class="p">,</span>
|
|
9451
|
+
<a id="__codelineno-19-17" name="__codelineno-19-17" href="#__codelineno-19-17"></a><span class="w"> </span><span class="nt">"content_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"dcim.device"</span>
|
|
9452
|
+
<a id="__codelineno-19-18" name="__codelineno-19-18" href="#__codelineno-19-18"></a><span class="w"> </span><span class="p">},</span>
|
|
9453
|
+
<a id="__codelineno-19-19" name="__codelineno-19-19" href="#__codelineno-19-19"></a><span class="w"> </span><span class="nt">"operator"</span><span class="p">:</span><span class="w"> </span><span class="s2">"intersection"</span><span class="p">,</span>
|
|
9454
|
+
<a id="__codelineno-19-20" name="__codelineno-19-20" href="#__codelineno-19-20"></a><span class="w"> </span><span class="nt">"weight"</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span>
|
|
9455
|
+
<a id="__codelineno-19-21" name="__codelineno-19-21" href="#__codelineno-19-21"></a><span class="p">}</span>
|
|
8931
9456
|
</code></pre></div>
|
|
8932
9457
|
<p>Observe that after adding this new membership object, the parent group now reflects this in its <code>children</code>:</p>
|
|
8933
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
8934
|
-
<a id="__codelineno-
|
|
8935
|
-
<a id="__codelineno-
|
|
8936
|
-
<a id="__codelineno-
|
|
8937
|
-
<a id="__codelineno-
|
|
8938
|
-
<a id="__codelineno-
|
|
8939
|
-
<a id="__codelineno-
|
|
8940
|
-
<a id="__codelineno-
|
|
8941
|
-
<a id="__codelineno-
|
|
8942
|
-
<a id="__codelineno-
|
|
8943
|
-
<a id="__codelineno-
|
|
8944
|
-
<a id="__codelineno-
|
|
8945
|
-
<a id="__codelineno-
|
|
8946
|
-
<a id="__codelineno-
|
|
8947
|
-
<a id="__codelineno-
|
|
8948
|
-
<a id="__codelineno-
|
|
8949
|
-
<a id="__codelineno-
|
|
8950
|
-
<a id="__codelineno-
|
|
8951
|
-
<a id="__codelineno-
|
|
8952
|
-
<a id="__codelineno-
|
|
8953
|
-
<a id="__codelineno-
|
|
8954
|
-
<a id="__codelineno-
|
|
8955
|
-
<a id="__codelineno-
|
|
8956
|
-
<a id="__codelineno-
|
|
8957
|
-
<a id="__codelineno-
|
|
8958
|
-
<a id="__codelineno-
|
|
8959
|
-
<a id="__codelineno-
|
|
8960
|
-
<a id="__codelineno-
|
|
8961
|
-
<a id="__codelineno-
|
|
8962
|
-
<a id="__codelineno-
|
|
8963
|
-
<a id="__codelineno-
|
|
8964
|
-
<a id="__codelineno-
|
|
8965
|
-
<a id="__codelineno-
|
|
8966
|
-
<a id="__codelineno-
|
|
8967
|
-
<a id="__codelineno-
|
|
8968
|
-
<a id="__codelineno-
|
|
8969
|
-
<a id="__codelineno-
|
|
8970
|
-
<a id="__codelineno-
|
|
9458
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="err">GET</span><span class="w"> </span><span class="err">/api/ex</span><span class="kc">tras</span><span class="err">/dy</span><span class="kc">na</span><span class="err">mic</span><span class="mi">-</span><span class="err">groups/</span><span class="mi">1</span><span class="kc">f</span><span class="mi">825078-</span><span class="err">b</span><span class="mi">6</span><span class="err">dc</span><span class="mi">-4</span><span class="err">b</span><span class="mi">12-9463-</span><span class="err">be</span><span class="mi">5</span><span class="err">a</span><span class="mi">9189</span><span class="err">b</span><span class="mi">03</span><span class="kc">f</span><span class="err">/</span>
|
|
9459
|
+
<a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a>
|
|
9460
|
+
<a id="__codelineno-20-3" name="__codelineno-20-3" href="#__codelineno-20-3"></a><span class="p">{</span>
|
|
9461
|
+
<a id="__codelineno-20-4" name="__codelineno-20-4" href="#__codelineno-20-4"></a><span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1f825078-b6dc-4b12-9463-be5a9189b03f"</span><span class="p">,</span>
|
|
9462
|
+
<a id="__codelineno-20-5" name="__codelineno-20-5" href="#__codelineno-20-5"></a><span class="w"> </span><span class="nt">"display"</span><span class="p">:</span><span class="w"> </span><span class="s2">"parent"</span><span class="p">,</span>
|
|
9463
|
+
<a id="__codelineno-20-6" name="__codelineno-20-6" href="#__codelineno-20-6"></a><span class="w"> </span><span class="nt">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:6789/api/extras/dynamic-groups/1f825078-b6dc-4b12-9463-be5a9189b03f/"</span><span class="p">,</span>
|
|
9464
|
+
<a id="__codelineno-20-7" name="__codelineno-20-7" href="#__codelineno-20-7"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"parent"</span><span class="p">,</span>
|
|
9465
|
+
<a id="__codelineno-20-8" name="__codelineno-20-8" href="#__codelineno-20-8"></a><span class="w"> </span><span class="nt">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span>
|
|
9466
|
+
<a id="__codelineno-20-9" name="__codelineno-20-9" href="#__codelineno-20-9"></a><span class="w"> </span><span class="nt">"content_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"dcim.device"</span><span class="p">,</span>
|
|
9467
|
+
<a id="__codelineno-20-10" name="__codelineno-20-10" href="#__codelineno-20-10"></a><span class="w"> </span><span class="nt">"group_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"dynamic-set"</span><span class="p">,</span>
|
|
9468
|
+
<a id="__codelineno-20-11" name="__codelineno-20-11" href="#__codelineno-20-11"></a><span class="w"> </span><span class="nt">"filter"</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
|
|
9469
|
+
<a id="__codelineno-20-12" name="__codelineno-20-12" href="#__codelineno-20-12"></a><span class="w"> </span><span class="nt">"children"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
|
9470
|
+
<a id="__codelineno-20-13" name="__codelineno-20-13" href="#__codelineno-20-13"></a><span class="w"> </span><span class="p">{</span>
|
|
9471
|
+
<a id="__codelineno-20-14" name="__codelineno-20-14" href="#__codelineno-20-14"></a><span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"4c8296de-42bc-49a6-8fed-fc1b1f6b93ca"</span><span class="p">,</span>
|
|
9472
|
+
<a id="__codelineno-20-15" name="__codelineno-20-15" href="#__codelineno-20-15"></a><span class="w"> </span><span class="nt">"display"</span><span class="p">:</span><span class="w"> </span><span class="s2">"parent > intersection (10) > first-child"</span><span class="p">,</span>
|
|
9473
|
+
<a id="__codelineno-20-16" name="__codelineno-20-16" href="#__codelineno-20-16"></a><span class="w"> </span><span class="nt">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:6789/api/extras/dynamic-group-memberships/4c8296de-42bc-49a6-8fed-fc1b1f6b93ca/"</span><span class="p">,</span>
|
|
9474
|
+
<a id="__codelineno-20-17" name="__codelineno-20-17" href="#__codelineno-20-17"></a><span class="w"> </span><span class="nt">"group"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
|
9475
|
+
<a id="__codelineno-20-18" name="__codelineno-20-18" href="#__codelineno-20-18"></a><span class="w"> </span><span class="nt">"display"</span><span class="p">:</span><span class="w"> </span><span class="s2">"first-child"</span><span class="p">,</span>
|
|
9476
|
+
<a id="__codelineno-20-19" name="__codelineno-20-19" href="#__codelineno-20-19"></a><span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"97188a74-eddd-46d8-be41-909c1ece1d43"</span><span class="p">,</span>
|
|
9477
|
+
<a id="__codelineno-20-20" name="__codelineno-20-20" href="#__codelineno-20-20"></a><span class="w"> </span><span class="nt">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:6789/api/extras/dynamic-groups/97188a74-eddd-46d8-be41-909c1ece1d43/"</span><span class="p">,</span>
|
|
9478
|
+
<a id="__codelineno-20-21" name="__codelineno-20-21" href="#__codelineno-20-21"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"first-child"</span><span class="p">,</span>
|
|
9479
|
+
<a id="__codelineno-20-22" name="__codelineno-20-22" href="#__codelineno-20-22"></a><span class="w"> </span><span class="nt">"content_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"dcim.device"</span>
|
|
9480
|
+
<a id="__codelineno-20-23" name="__codelineno-20-23" href="#__codelineno-20-23"></a><span class="w"> </span><span class="p">},</span>
|
|
9481
|
+
<a id="__codelineno-20-24" name="__codelineno-20-24" href="#__codelineno-20-24"></a><span class="w"> </span><span class="nt">"parent_group"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
|
9482
|
+
<a id="__codelineno-20-25" name="__codelineno-20-25" href="#__codelineno-20-25"></a><span class="w"> </span><span class="nt">"display"</span><span class="p">:</span><span class="w"> </span><span class="s2">"parent"</span><span class="p">,</span>
|
|
9483
|
+
<a id="__codelineno-20-26" name="__codelineno-20-26" href="#__codelineno-20-26"></a><span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1f825078-b6dc-4b12-9463-be5a9189b03f"</span><span class="p">,</span>
|
|
9484
|
+
<a id="__codelineno-20-27" name="__codelineno-20-27" href="#__codelineno-20-27"></a><span class="w"> </span><span class="nt">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:6789/api/extras/dynamic-groups/1f825078-b6dc-4b12-9463-be5a9189b03f/"</span><span class="p">,</span>
|
|
9485
|
+
<a id="__codelineno-20-28" name="__codelineno-20-28" href="#__codelineno-20-28"></a><span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"parent"</span><span class="p">,</span>
|
|
9486
|
+
<a id="__codelineno-20-29" name="__codelineno-20-29" href="#__codelineno-20-29"></a><span class="w"> </span><span class="nt">"content_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"dcim.device"</span>
|
|
9487
|
+
<a id="__codelineno-20-30" name="__codelineno-20-30" href="#__codelineno-20-30"></a><span class="w"> </span><span class="p">},</span>
|
|
9488
|
+
<a id="__codelineno-20-31" name="__codelineno-20-31" href="#__codelineno-20-31"></a><span class="w"> </span><span class="nt">"operator"</span><span class="p">:</span><span class="w"> </span><span class="s2">"intersection"</span><span class="p">,</span>
|
|
9489
|
+
<a id="__codelineno-20-32" name="__codelineno-20-32" href="#__codelineno-20-32"></a><span class="w"> </span><span class="nt">"weight"</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span>
|
|
9490
|
+
<a id="__codelineno-20-33" name="__codelineno-20-33" href="#__codelineno-20-33"></a><span class="w"> </span><span class="p">}</span>
|
|
9491
|
+
<a id="__codelineno-20-34" name="__codelineno-20-34" href="#__codelineno-20-34"></a><span class="w"> </span><span class="p">],</span>
|
|
9492
|
+
<a id="__codelineno-20-35" name="__codelineno-20-35" href="#__codelineno-20-35"></a><span class="w"> </span><span class="nt">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2022-07-15T00:00:00Z"</span><span class="p">,</span>
|
|
9493
|
+
<a id="__codelineno-20-36" name="__codelineno-20-36" href="#__codelineno-20-36"></a><span class="w"> </span><span class="nt">"last_updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2022-07-15T16:50:45.453965Z"</span><span class="p">,</span>
|
|
9494
|
+
<a id="__codelineno-20-37" name="__codelineno-20-37" href="#__codelineno-20-37"></a><span class="w"> </span><span class="nt">"notes_url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://localhost:6789/api/extras/dynamic-groups/1f825078-b6dc-4b12-9463-be5a9189b03f/notes/"</span><span class="p">,</span>
|
|
9495
|
+
<a id="__codelineno-20-38" name="__codelineno-20-38" href="#__codelineno-20-38"></a><span class="w"> </span><span class="nt">"custom_fields"</span><span class="p">:</span><span class="w"> </span><span class="p">{}</span>
|
|
9496
|
+
<a id="__codelineno-20-39" name="__codelineno-20-39" href="#__codelineno-20-39"></a><span class="p">}</span>
|
|
8971
9497
|
</code></pre></div>
|
|
8972
|
-
<h4 id="updating-or-deleting-child-groups">Updating or Deleting Child Groups<a class="headerlink" href="#updating-or-deleting-child-groups" title="Permanent link">¶</a></h4>
|
|
9498
|
+
<h4 id="updating-or-deleting-child-groups-via-rest">Updating or Deleting Child Groups via REST<a class="headerlink" href="#updating-or-deleting-child-groups-via-rest" title="Permanent link">¶</a></h4>
|
|
8973
9499
|
<p>Updating or deleting Dynamic Group Membership is done by sending a request to the detail endpoint for that membership object.</p>
|
|
8974
|
-
<p>A Dynamic Group Membership may be updated using <code>PUT</code> or <code>PATCH</code>
|
|
8975
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
8976
|
-
<a id="__codelineno-
|
|
8977
|
-
<a id="__codelineno-
|
|
8978
|
-
<a id="__codelineno-
|
|
8979
|
-
<a id="__codelineno-
|
|
8980
|
-
<a id="__codelineno-22-6" name="__codelineno-22-6" href="#__codelineno-22-6"></a><span class="w"> </span><span class="nt">"operator"</span><span class="p">:</span><span class="w"> </span><span class="s2">"difference"</span><span class="p">,</span>
|
|
8981
|
-
<a id="__codelineno-22-7" name="__codelineno-22-7" href="#__codelineno-22-7"></a><span class="w"> </span><span class="nt">"weight"</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span>
|
|
8982
|
-
<a id="__codelineno-22-8" name="__codelineno-22-8" href="#__codelineno-22-8"></a><span class="p">}</span>
|
|
8983
|
-
</code></pre></div>
|
|
8984
|
-
<p>Performing a partial update using a <code>PATCH</code> request can allow any single field to be updated without affecting the other fields. For example, if we only wanted to update the <code>weight</code> for a membership:</p>
|
|
8985
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="err">PATCH</span><span class="w"> </span><span class="err">/api/ex</span><span class="kc">tras</span><span class="err">/dy</span><span class="kc">na</span><span class="err">mic</span><span class="mi">-</span><span class="err">group</span><span class="mi">-</span><span class="err">memberships/</span><span class="p">{</span><span class="err">uuid</span><span class="p">}</span><span class="err">/</span>
|
|
8986
|
-
<a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a>
|
|
8987
|
-
<a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a><span class="p">{</span>
|
|
8988
|
-
<a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a><span class="w"> </span><span class="nt">"weight"</span><span class="p">:</span><span class="w"> </span><span class="mi">15</span>
|
|
8989
|
-
<a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a><span class="p">}</span>
|
|
9500
|
+
<p>A Dynamic Group Membership may be updated using <code>PUT</code> or <code>PATCH</code> requests. Again, a <code>PUT</code> request requires the entire object to be described, while performing a partial update using a <code>PATCH</code> request can allow any single field to be updated without affecting the other fields. For example, if we only wanted to update the <code>weight</code> for a membership:</p>
|
|
9501
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="err">PATCH</span><span class="w"> </span><span class="err">/api/ex</span><span class="kc">tras</span><span class="err">/dy</span><span class="kc">na</span><span class="err">mic</span><span class="mi">-</span><span class="err">group</span><span class="mi">-</span><span class="err">memberships/</span><span class="p">{</span><span class="err">uuid</span><span class="p">}</span><span class="err">/</span>
|
|
9502
|
+
<a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a>
|
|
9503
|
+
<a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a><span class="p">{</span>
|
|
9504
|
+
<a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a><span class="w"> </span><span class="nt">"weight"</span><span class="p">:</span><span class="w"> </span><span class="mi">15</span>
|
|
9505
|
+
<a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a><span class="p">}</span>
|
|
8990
9506
|
</code></pre></div>
|
|
8991
9507
|
<p>To delete a Dynamic Group Membership you would send a <code>DELETE</code> request to the detail endpoint:</p>
|
|
8992
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-
|
|
8993
|
-
</code></pre></div>
|
|
8994
|
-
<h2 id="membership-and-caching">Membership and Caching<a class="headerlink" href="#membership-and-caching" title="Permanent link">¶</a></h2>
|
|
8995
|
-
<p>Since looking up the members of a Dynamic Group can be a very expensive operation, Nautobot caches the results of these lookups for a configurable amount of time. By default this cache is disabled. You can change this default value by changing the <code>DYNAMIC_GROUPS_MEMBER_CACHE_TIMEOUT</code> in the administration panel. This value is in seconds.</p>
|
|
8996
|
-
<p>Creating, updating, or deleting a Dynamic Group will automatically invalidate the cache for that group. This means that the next time the group is evaluated, the cache will be refreshed with the new membership information.</p>
|
|
8997
|
-
<p>This greatly speeds up the reverse association of any object to any Dynamic Group(s) to which it may be associated.</p>
|
|
8998
|
-
<p>A Dynamic Group object in the ORM exposes two (2) properties for retrieving the members of that group:</p>
|
|
8999
|
-
<ul>
|
|
9000
|
-
<li><code>members</code> - The evaluated QuerySet defined by the Dynamic Group and it's potential child groups. This will always perform database queries.</li>
|
|
9001
|
-
<li><code>members_cached</code> - A cached instance of <code>members.all()</code>. This will only perform database queries if the cache is expired. You can continue to perform <code>.filter()</code> and other QuerySet operations but this will incur additional database queries.</li>
|
|
9002
|
-
</ul>
|
|
9003
|
-
<p>Additionally, a Dynamic Group has the following methods for working with group membership and caching:</p>
|
|
9004
|
-
<ul>
|
|
9005
|
-
<li><code>update_cached_members</code> - A way of forcing an update to the cached members of a Dynamic Group. This will always perform database queries. It will also return the updated <code>members_cached</code> property.</li>
|
|
9006
|
-
<li><code>has_member</code> - A way of checking if an object is a member of a Dynamic Group. The arguments are:<ul>
|
|
9007
|
-
<li><code>obj</code> - An instance of an object to check if it is a member of the given group.</li>
|
|
9008
|
-
<li><code>use_cache</code> - A boolean value to choose whether to use the cached member list (<code>use_cache=True</code>) or force the database query (<code>use_cache=False</code>, the default). This is a handy way to have Nautobot perform the ideal membership check.<ul>
|
|
9009
|
-
<li><code>DynamicGroup.members_cached.filter(pk=obj.pk).exists()</code> will re-perform a database query, where <code>DynamicGroup.has_member(obj, use_cache=False)</code> will perform <code>obj in list(DyamicGroup.members_cached)</code>, performing no additional database queries.</li>
|
|
9010
|
-
<li>In contrast <code>DynamicGroup.members.filter(pk=obj.pk).exists()</code> will always a database query but a much faster one as opposed to<code>obj in list(DyamicGroup.members)</code>.</li>
|
|
9011
|
-
</ul>
|
|
9012
|
-
</li>
|
|
9013
|
-
</ul>
|
|
9014
|
-
</li>
|
|
9015
|
-
</ul>
|
|
9016
|
-
<p>A model instance that supports Dynamic Groups will expose the following properties:</p>
|
|
9017
|
-
<ul>
|
|
9018
|
-
<li><code>dynamic_groups</code> - A QuerySet of <code>DynamicGroup</code> objects; performs the most database queries.<ul>
|
|
9019
|
-
<li>Iterates over all Dynamic Groups that are applicable to the instance's content type, resulting in a list (what is available as <code>dynamic_groups_list</code>) of applicable Dynamic Groups.</li>
|
|
9020
|
-
<li>A final query (<code>DynamicGroup.objects.filter(pk__in=dynamic_groups_list)</code>) is necessary to retrieve a QuerySet of <code>DynamicGroup</code> objects.</li>
|
|
9021
|
-
<li>Always performs <code>N+1</code> queries where <code>N</code> is the number of Dynamic Groups that are applicable to the instance's content type</li>
|
|
9022
|
-
<li>Evaluation of <code>instance_1.dynamic_groups</code> adds no benefit to <code>instance_2.dynamic_groups</code>: each instance will perform <code>N+1</code> queries.</li>
|
|
9023
|
-
</ul>
|
|
9024
|
-
</li>
|
|
9025
|
-
<li><code>dynamic_groups_cached</code> - A QuerySet of <code>DynamicGroup</code> objects; uses cached member list if available. Ideal for most use cases.<ul>
|
|
9026
|
-
<li>Uses cached member lists for each Dynamic Group that is applicable to the instance's content type. Membership check returns a list (what is available as <code>dynamic_groups_list_cached</code>) of applicable Dynamic Groups.</li>
|
|
9027
|
-
<li>A query (<code>DynamicGroup.objects.filter(pk__in=dynamic_groups_list_cached)</code>) is necessary to retrieve a QuerySet of <code>DynamicGroup</code> objects.</li>
|
|
9028
|
-
<li>Ideal for most use cases, performing only <code>1</code> query if membership lists are cached.</li>
|
|
9029
|
-
<li>Evaluation of <code>instance_1.dynamic_groups_cached</code> benefits <code>instance_2.dynamic_groups_cached</code> as all dynamic group membership lists are cached: <code>instance_1.dynamic_groups_cached</code> may perform <code>N+1</code> queries, but <code>instance_2.dynamic_groups_cached</code> will perform <code>1</code> query.</li>
|
|
9030
|
-
</ul>
|
|
9031
|
-
</li>
|
|
9032
|
-
<li><code>dynamic_groups_list</code> - List of membership to <code>DynamicGroup</code> objects; performs one less database query than <code>dynamic_groups</code>.<ul>
|
|
9033
|
-
<li>The internal list used by <code>dynamic_groups</code> to retrieve a QuerySet of <code>DynamicGroup</code> objects, but saves the final query.</li>
|
|
9034
|
-
<li>Beneficial if you don't need QuerySet instance of <code>DynamicGroup</code> objects, but want to use uncached membership lists on a large amount of objects.</li>
|
|
9035
|
-
<li>Always performs <code>N</code> queries where <code>N</code> is the number of Dynamic Groups that are applicable to the instance's content type</li>
|
|
9036
|
-
</ul>
|
|
9037
|
-
</li>
|
|
9038
|
-
<li><code>dynamic_groups_list_cached</code> - List of membership to <code>DynamicGroup</code> objects; uses cached member list if available. Performs no database queries in optimal conditions.<ul>
|
|
9039
|
-
<li>The internal list used by <code>dynamic_groups_cached</code> to retrieve a QuerySet of <code>DynamicGroup</code> objects, but saves the final query.</li>
|
|
9040
|
-
<li>The most optimal way to retrieve a list of <code>DynamicGroup</code> objects for an instance: Worst case <code>instance_1.dynamic_groups_list_cached</code> will perform <code>N</code> queries, but <code>instance_2.dynamic_groups_list_cached</code> will perform <code>0</code> queries.</li>
|
|
9041
|
-
</ul>
|
|
9042
|
-
</li>
|
|
9043
|
-
</ul>
|
|
9044
|
-
<h3 id="invalidatingrefreshing-the-cache">Invalidating/Refreshing the Cache<a class="headerlink" href="#invalidatingrefreshing-the-cache" title="Permanent link">¶</a></h3>
|
|
9045
|
-
<p>If you need to invalidate the membership cache for a Dynamic Group, you can do so by running the management command: <code>nautobot-server refresh_dynamic_group_member_caches</code>. This will invalidate the cache for all Dynamic Groups.</p>
|
|
9046
|
-
<p>You can also create a <code>Job</code> to run periodically to refresh the cache for particular Dynamic Groups and running on a schedule:</p>
|
|
9047
|
-
<div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a><span class="kn">from</span> <span class="nn">nautobot.extras.jobs</span> <span class="kn">import</span> <span class="n">Job</span><span class="p">,</span> <span class="n">ObjectVar</span>
|
|
9048
|
-
<a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a><span class="kn">from</span> <span class="nn">nautobot.extras.models</span> <span class="kn">import</span> <span class="n">DynamicGroup</span>
|
|
9049
|
-
<a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a>
|
|
9050
|
-
<a id="__codelineno-25-4" name="__codelineno-25-4" href="#__codelineno-25-4"></a><span class="k">class</span> <span class="nc">ExampleDynamicGroupMemberCacheRefresh</span><span class="p">(</span><span class="n">Job</span><span class="p">):</span>
|
|
9051
|
-
<a id="__codelineno-25-5" name="__codelineno-25-5" href="#__codelineno-25-5"></a> <span class="n">dynamic_group</span> <span class="o">=</span> <span class="n">ObjectVar</span><span class="p">(</span>
|
|
9052
|
-
<a id="__codelineno-25-6" name="__codelineno-25-6" href="#__codelineno-25-6"></a> <span class="n">model</span><span class="o">=</span><span class="n">DynamicGroup</span>
|
|
9053
|
-
<a id="__codelineno-25-7" name="__codelineno-25-7" href="#__codelineno-25-7"></a> <span class="p">)</span>
|
|
9054
|
-
<a id="__codelineno-25-8" name="__codelineno-25-8" href="#__codelineno-25-8"></a>
|
|
9055
|
-
<a id="__codelineno-25-9" name="__codelineno-25-9" href="#__codelineno-25-9"></a> <span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
|
|
9056
|
-
<a id="__codelineno-25-10" name="__codelineno-25-10" href="#__codelineno-25-10"></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"Update Dynamic Group Member Cache"</span>
|
|
9057
|
-
<a id="__codelineno-25-11" name="__codelineno-25-11" href="#__codelineno-25-11"></a>
|
|
9058
|
-
<a id="__codelineno-25-12" name="__codelineno-25-12" href="#__codelineno-25-12"></a> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">commit</span><span class="p">):</span>
|
|
9059
|
-
<a id="__codelineno-25-13" name="__codelineno-25-13" href="#__codelineno-25-13"></a> <span class="n">DynamicGroup</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">pk</span><span class="o">=</span><span class="n">data</span><span class="p">[</span><span class="s1">'dynamic_group'</span><span class="p">])</span><span class="o">.</span><span class="n">update_cached_members</span><span class="p">()</span>
|
|
9508
|
+
<div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="err">DELETE</span><span class="w"> </span><span class="err">/api/ex</span><span class="kc">tras</span><span class="err">/dy</span><span class="kc">na</span><span class="err">mic</span><span class="mi">-</span><span class="err">group</span><span class="mi">-</span><span class="err">memberships/</span><span class="p">{</span><span class="err">uuid</span><span class="p">}</span><span class="err">/</span>
|
|
9060
9509
|
</code></pre></div>
|
|
9510
|
+
<h2 id="dynamic-groups-and-the-python-api-django-orm">Dynamic Groups and the Python API (Django ORM)<a class="headerlink" href="#dynamic-groups-and-the-python-api-django-orm" title="Permanent link">¶</a></h2>
|
|
9511
|
+
<div class="admonition tip">
|
|
9512
|
+
<p class="admonition-title">Tip</p>
|
|
9513
|
+
<p>By default, all models inheriting from Nautobot's <code>OrganizationalModel</code> or <code>PrimaryModel</code> classes are assumed to be a viable object type for Dynamic Groups to be defined for. Individual models that do not wish to be assignable to Dynamic Groups can declare the flag <code>is_dynamic_group_associable_model = False</code> on their model definition. Conversely, models that inherit directly from Nautobot's <code>BaseModel</code> default to <em>not</em> supporting Dynamic Groups, but can include the <code>nautobot.apps.models.DynamicGroupsModelMixin</code> class as a part of their class definition in order to enable Dynamic Group support.</p>
|
|
9514
|
+
</div>
|
|
9515
|
+
<h3 id="working-with-a-dynamic-groups-members">Working with a Dynamic Group's Members<a class="headerlink" href="#working-with-a-dynamic-groups-members" title="Permanent link">¶</a></h3>
|
|
9516
|
+
<p>Any Dynamic Group object in the ORM has a simple property, <code>.members</code>, for retrieving the QuerySet of (cached) members of that group. Because this data is cached in the database, even for a complex filter-based or set-based group definition, no expensive queries are required here; evaluating the QuerySet will perform a single efficient database query. You can of course perform further <code>.filter()</code> and other QuerySet operations, but (as always with QuerySets) this will incur additional database queries to re-evaluate the modified QuerySet.</p>
|
|
9517
|
+
<p>Additionally, a Dynamic Group has the method <code>.has_member(obj)</code> for checking whether a single given database object is a (cached) member of this group. This too is a very efficient query.</p>
|
|
9518
|
+
<p>Neither of the above attributes provide a way to directly bypass the cache used by this Dynamic Group; if it's important to your use case to guarantee up-to-the-minute accurate membership information, you can call a Dynamic Group's <code>.update_cached_members()</code> method, which will refresh its cache and return the resulting member QuerySet. Because refreshing the cache involves evaluating the Dynamic Group's defined filter(s), this is necessarily a more expensive database query(s) than either of the above access patterns, so it should only be done if required.</p>
|
|
9519
|
+
<details class="version-changed">
|
|
9520
|
+
<summary>Changed in version 2.3.0 — Simpler, always-on caching</summary>
|
|
9521
|
+
<p>In prior versions of Nautobot, <code>.members</code> did not use a cache (and so would always re-evaluate the Dynamic Group), and a separate <code>.members_cached</code> property used a configurable Redis cache to temporarily store the evaluated QuerySet. For performance reasons, the behavior of <code>.members</code> has been changed to behave as described above. <code>.members_cached</code> should be considered deprecated and will likely be removed in a future major release.</p>
|
|
9522
|
+
<p>Similarly, <code>.has_member(obj)</code> was previously non-cached by default, but the Redis cache could be used by invoking it as <code>.has_member(obj, use_cache=True)</code>; this too has been changed in this release, and the <code>use_cache</code> flag should be considered deprecated as well.</p>
|
|
9523
|
+
</details>
|
|
9524
|
+
<p>For static-assignment-based Dynamic groups (only!) you can update its member list by assigning directly to its <code>.members</code> or calling its <code>.add_members()</code> or <code>.remove_members()</code> methods as desired. Invoking any of these APIs for a filter-based or set-based Dynamic Group is an error and will raise an exception.</p>
|
|
9525
|
+
<h3 id="working-with-an-objects-containing-dynamic-groups">Working with an Object's Containing Dynamic Groups<a class="headerlink" href="#working-with-an-objects-containing-dynamic-groups" title="Permanent link">¶</a></h3>
|
|
9526
|
+
<p>Conversely, any model instance that supports Dynamic Groups will expose the property <code>.dynamic_groups</code>, which returns the QuerySet of (cached) Dynamic Groups that contain the model instance. As above, there's no direct way to bypass caching; if it's critically important to your use case to have up-to-the-minute accuracy, your only recourse is to call <code>DynamicGroup.update_cached_members()</code> for <em>each and every potentially relevant DynamicGroup record</em>, which obviously has the potential to be a very expensive operation if many Dynamic Groups are defined.</p>
|
|
9527
|
+
<details class="version-changed">
|
|
9528
|
+
<summary>Changed in version 2.3.0 — Simpler, always-on caching</summary>
|
|
9529
|
+
<p>In prior versions of Nautobot, <code>.dynamic_groups</code> did not use a cache (and so had the potential to be a very expensive lookup every time it was accessed), and a separate <code>.dynamic_groups_cached</code> property used a configurable Redis cache to temporarily store the evaluated QuerySet. For performance reasons, the behavior of <code>.dynamic_groups</code> has been changed to behave as described above. <code>.dynamic_groups_cached</code> should be considered deprecated and will likely be removed in a future major release.</p>
|
|
9530
|
+
<p>Additionally, prior versions of Nautobot exposed two additional model properties, <code>.dynamic_groups_list</code> and <code>.dynamic_groups_cached</code>, which provided a (very slight) performance improvement over the previous two properties. With the introduction of the database cache implementation, these properties no longer provide any relevant performance improvement, and should be considered deprecated as well.</p>
|
|
9531
|
+
</details>
|
|
9532
|
+
<h3 id="refreshing-the-cache">Refreshing the Cache<a class="headerlink" href="#refreshing-the-cache" title="Permanent link">¶</a></h3>
|
|
9533
|
+
<p>In addition to the UI, management command, and Job based mechanisms for refreshing a group's members cache, described earlier in this document, from an App or Job, you can also directly call <code>group.update_cached_members()</code> as described above.</p>
|
|
9061
9534
|
|
|
9062
9535
|
|
|
9063
9536
|
|
|
@@ -9106,13 +9579,13 @@
|
|
|
9106
9579
|
|
|
9107
9580
|
|
|
9108
9581
|
|
|
9109
|
-
<a href="
|
|
9582
|
+
<a href="staticgroupassociation.html" class="md-footer__link md-footer__link--next" aria-label="Next: Static Group Associations">
|
|
9110
9583
|
<div class="md-footer__title">
|
|
9111
9584
|
<span class="md-footer__direction">
|
|
9112
9585
|
Next
|
|
9113
9586
|
</span>
|
|
9114
9587
|
<div class="md-ellipsis">
|
|
9115
|
-
|
|
9588
|
+
Static Group Associations
|
|
9116
9589
|
</div>
|
|
9117
9590
|
</div>
|
|
9118
9591
|
<div class="md-footer__button md-icon">
|
|
@@ -9154,7 +9627,7 @@
|
|
|
9154
9627
|
|
|
9155
9628
|
|
|
9156
9629
|
<a href="https://blog.networktocode.com/blog/tags/nautobot" target="_blank" rel="noopener" title="Network to Code Blog" class="md-social__link">
|
|
9157
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.
|
|
9630
|
+
<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 64zm0 352a64 64 0 1 1 128 0 64 64 0 1 1-128 0zm32-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-32z"/></svg>
|
|
9158
9631
|
</a>
|
|
9159
9632
|
|
|
9160
9633
|
|
|
@@ -9162,7 +9635,7 @@
|
|
|
9162
9635
|
|
|
9163
9636
|
|
|
9164
9637
|
<a href="https://www.youtube.com/playlist?list=PLjA0bhxgryJ2Ts4GJMDA-tPzVWEncv4pb" target="_blank" rel="noopener" title="Nautobot Videos" class="md-social__link">
|
|
9165
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.
|
|
9638
|
+
<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.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"/></svg>
|
|
9166
9639
|
</a>
|
|
9167
9640
|
|
|
9168
9641
|
|
|
@@ -9170,7 +9643,7 @@
|
|
|
9170
9643
|
|
|
9171
9644
|
|
|
9172
9645
|
<a href="https://www.networktocode.com/community/" target="_blank" rel="noopener" title="Network to Code Community" class="md-social__link">
|
|
9173
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.
|
|
9646
|
+
<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.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.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.06V315.1zm47.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.06H164.9zm0 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.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"/></svg>
|
|
9174
9647
|
</a>
|
|
9175
9648
|
|
|
9176
9649
|
|
|
@@ -9178,7 +9651,7 @@
|
|
|
9178
9651
|
|
|
9179
9652
|
|
|
9180
9653
|
<a href="https://github.com/nautobot/nautobot" target="_blank" rel="noopener" title="GitHub Repo" class="md-social__link">
|
|
9181
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.
|
|
9654
|
+
<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.6zm-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.3zm44.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.9zM244.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 8zM97.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-1zm-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.7zm32.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-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
|
|
9182
9655
|
</a>
|
|
9183
9656
|
|
|
9184
9657
|
|
|
@@ -9186,7 +9659,7 @@
|
|
|
9186
9659
|
|
|
9187
9660
|
|
|
9188
9661
|
<a href="https://twitter.com/networktocode" target="_blank" rel="noopener" title="Network to Code Twitter" class="md-social__link">
|
|
9189
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.
|
|
9662
|
+
<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.253z"/></svg>
|
|
9190
9663
|
</a>
|
|
9191
9664
|
|
|
9192
9665
|
</div>
|