### Quickstart Example for Syncing VLANs Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/jobs.md A minimum viable example for syncing VLANs from a remote system into Nautobot. Adapt remote system details, implement necessary models, and refine the `load` function for your specific use case. ```python # example_ssot_app/jobs.py from typing import Optional from diffsync import Adapter from nautobot.ipam.models import VLAN from nautobot.extras.jobs import Job from nautobot_ssot.contrib import NautobotModel, NautobotAdapter from nautobot_ssot.jobs import DataSource from remote_system import APIClient # This is only an example # Step 1 - data modeling class VLANModel(NautobotModel): """DiffSync model for VLANs.""" _model = VLAN _modelname = "vlan" _identifiers = ("vid", "group__name") _attributes = ("description",) vid: int group__name: Optional[str] = None description: Optional[str] = None # Step 2.1 - the Nautobot adapter class MySSoTNautobotAdapter(NautobotAdapter): """DiffSync adapter for Nautobot.""" vlan = VLANModel top_level = ("vlan",) # Step 2.2 - the remote adapter class MySSoTRemoteAdapter(Adapter): """DiffSync adapter for remote system.""" vlan = VLANModel top_level = ("vlan",) def __init__(self, *args, api_client, job=None, **kwargs): super().__init__(*args, **kwargs) self.api_client = api_client self.job = job def load(self): for vlan in self.api_client.get_vlans(): loaded_vlan = self.vlan(vid=vlan["vlan_id"], group__name=vlan["grouping"], description=vlan["description"]) self.add(loaded_vlan) # Step 3 - the job class ExampleDataSource(DataSource, Job): """SSoT Job class.""" class Meta: name = "Example Data Source" def load_source_adapter(self): self.source_adapter = MySSoTRemoteAdapter(api_client=APIClient(), job=self) self.source_adapter.load() def load_target_adapter(self): self.target_adapter = MySSoTNautobotAdapter(job=self) self.target_adapter.load() jobs = [ExampleDataSource] ``` -------------------------------- ### Install and Start Docker Development Environment Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/dev_environment.md Use these commands to install Poetry plugins, set up the virtual environment, and build/start the Dockerized development environment. ```shell poetry self add poetry-plugin-shell poetry shell poetry install invoke build invoke start ``` -------------------------------- ### Install and Start Local Poetry Development Environment Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/dev_environment.md Commands to set up the local Poetry environment, including installing dependencies, exporting environment variables, and starting Nautobot. ```shell poetry self add poetry-plugin-shell poetry shell poetry install --extras nautobot export $(cat development/development.env | xargs) export $(cat development/creds.env | xargs) invoke start && sleep 5 nautobot-server migrate ``` -------------------------------- ### Copy Credentials File Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/dev_environment.md Copies the example credentials file to be used for local Nautobot installation. This file stores sensitive information like passwords and tokens. ```shell cp development/creds.example.env development/creds.env ``` -------------------------------- ### Install nautobot-ssot with ServiceNow extras Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/servicenow_setup.md Install the nautobot-ssot app with the necessary dependencies for ServiceNow integration. ```shell pip install nautobot-ssot[servicenow] ``` -------------------------------- ### Create Changelog Fragment - Fixed Example Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/contributing.md Use the GitHub issue number and fragment type as the filename. The change summary should be a complete sentence in past tense, starting with a capital letter and ending with a period. ```plaintext 2362.fixed Fixed critical bug in documentation. ``` -------------------------------- ### Install nautobot-ssot with Itential Extras Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/itential_setup.md Install the nautobot-ssot app with the necessary dependencies for Itential integration. ```shell pip install nautobot-ssot[itential] ``` -------------------------------- ### Install nautobot-ssot with LibreNMS extras Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/librenms_setup.md Install the nautobot-ssot app with the necessary dependencies for LibreNMS integration. ```shell pip install nautobot-ssot[librenms] ``` -------------------------------- ### Install Device42 Extra Dependencies Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/device42_setup.md Install the nautobot-ssot app with the Device42 integration extra dependencies using pip. ```shell pip install nautobot-ssot[device42] ``` -------------------------------- ### Load Target Adapter Example Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/user/performance.md Instantiates and loads the target adapter for data synchronization. Uses a local Nautobot instance. ```python def load_target_adapter(self): """Method to instantiate and load the TARGET adapter into `self.target_adapter`.""" self.target_adapter = NautobotLocal(job=self) self.target_adapter.load() ``` -------------------------------- ### Load Source Adapter Example Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/user/performance.md Instantiates and loads the source adapter for data synchronization. Requires `source_url` and `source_token` from job arguments. ```python def load_source_adapter(self): """Method to instantiate and load the SOURCE adapter into `self.source_adapter`.""" self.source_adapter = NautobotRemote(url=self.kwargs["source_url"], token=self.kwargs["source_token"], job=self) self.source_adapter.load() ``` -------------------------------- ### Install nautobot-ssot with ACI extras Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/aci_setup.md Install the nautobot-ssot app with the necessary dependencies for ACI integration. ```shell pip install nautobot-ssot[aci] ``` -------------------------------- ### SolarWinds SSoT Extra Config Example Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/user/integrations/solarwinds.md Example JSON configuration for extra settings in the SolarWinds External Integration. Adjust port, retries, and batch_size as needed for your environment. ```json { "port": 443, "retries": 10, "batch_size": 100 } ``` -------------------------------- ### Install Infoblox Extra Dependencies Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/infoblox_setup.md Install the nautobot-ssot app with the Infoblox integration extra dependencies using pip. ```shell pip install nautobot-ssot[infoblox] ``` -------------------------------- ### Create Changelog Fragment - Security Example Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/contributing.md Use the 'security' fragment type for any security-related fixes. Ensure the summary is concise and informative. ```plaintext 2362.security Secured against potential cross-site scripting vulnerabilities. ``` -------------------------------- ### Install nautobot-ssot with Slurpit extras Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/slurpit_setup.md Install the nautobot-ssot app with the necessary dependencies for Slurpit integration. ```shell pip install nautobot-ssot[slurpit] ``` -------------------------------- ### Serve MkDocs Documentation Locally Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/release_checklist.md Start the documentation server with `poetry run mkdocs serve` to view the documentation site locally and enable automatic rebuilding as changes are made. ```bash poetry run mkdocs serve ``` -------------------------------- ### Example duplicate_product_model.txt content Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/servicenow_setup.md Illustrates the format of a duplicate record file generated by the SSOT run when duplicate product models are found in ServiceNow. ```text manufacturer_name,model_name,model_number Cisco,Catalyst 9300,C9300-48P Dell,PowerEdge R740,R740-8SFF HP,ProLiant DL360,DL360-G10 Juniper,EX4300,EX4300-48P Arista,7050X3,DCS-7050X3-32S ``` -------------------------------- ### Poetry Shell and Install Commands Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/dev_environment.md Commands to activate a virtual environment managed by Poetry and install project dependencies. This is essential for setting up the development environment. ```shell poetry shell poetry install ``` -------------------------------- ### Install Updated Poetry Dependencies Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/release_checklist.md After updating `poetry.lock` and `pyproject.toml`, run `poetry install` to install the refreshed package versions. ```bash poetry install ``` -------------------------------- ### Install IPFabric Integration Dependencies Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/ipfabric_setup.md Install the nautobot-ssot app with the IPFabric integration extra dependencies using pip. ```shell pip install nautobot-ssot[ipfabric] ``` -------------------------------- ### Configure to Hide Example Jobs Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/user/app_getting_started.md Add this configuration to your nautobot_config.py to hide the default example jobs from the UI. ```python PLUGINS_CONFIG = { "nautobot_ssot": { "hide_example_jobs": True, }, } ``` -------------------------------- ### Install Nautobot App SSOT Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/install.md Install the base Nautobot App SSOT package using pip. ```shell pip install nautobot-ssot ``` -------------------------------- ### Install Nautobot SSoT with Bootstrap Integration Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/bootstrap_setup.md Install the nautobot-ssot package with the bootstrap extra dependencies. Ensure this is done before configuring the integration. ```shell pip install nautobot-ssot[bootstrap] ``` -------------------------------- ### Install Nautobot-SSOT with IP Fabric Extras Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/ipfabric_setup.md Install or upgrade the nautobot-ssot app, ensuring the IP Fabric extras are included for full functionality. ```shell pip install --upgrade nautobot-ssot[ipfabric] ``` -------------------------------- ### Install Nautobot SSOT with ACI Extras Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/aci_setup.md Install the main nautobot-ssot app with the necessary ACI integration extras. ```shell pip install --upgrade nautobot-ssot[aci] ``` -------------------------------- ### Configure ServiceNow integration in nautobot_config.py Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/servicenow_setup.md Example configuration for enabling and setting up ServiceNow integration within the Nautobot configuration file. Values can be overridden using environment variables. ```python PLUGINS_CONFIG = { "nautobot_ssot": { "enable_servicenow": True, "servicenow_instance": os.getenv("SERVICENOW_INSTANCE", ""), "servicenow_password": os.getenv("SERVICENOW_PASSWORD", ""), "servicenow_username": os.getenv("SERVICENOW_USERNAME", ""), } } ``` -------------------------------- ### Configure Device42 Integration in Nautobot Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/device42_setup.md Example snippet from nautobot_config.py demonstrating how to enable and configure the Device42 integration, including various settings for host, credentials, SSL verification, defaults, and tag-based mapping. ```python PLUGINS_CONFIG = { "nautobot_ssot": { "enable_device42": is_truthy(os.getenv("NAUTOBOT_SSOT_ENABLE_DEVICE42")), "device42_host": os.getenv("NAUTOBOT_SSOT_DEVICE42_HOST", ""), "device42_username": os.getenv("NAUTOBOT_SSOT_DEVICE42_USERNAME", ""), "device42_password": os.getenv("NAUTOBOT_SSOT_DEVICE42_PASSWORD", ""), "device42_verify_ssl": False, "device42_defaults": { "site_status": "Active", "rack_status": "Active", "device_role": "Unknown", }, "device42_delete_on_sync": False, "device42_use_dns": True, "device42_customer_is_facility": True, "device42_facility_prepend": "sitecode-", "device42_role_prepend": "nautobot-", "device42_ignore_tag": "", "device42_hostname_mapping": [], } } ``` -------------------------------- ### Run Nautobot Post Upgrade Command Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/install.md Execute the post_upgrade command to apply database migrations and clear the cache after installing or upgrading the app. ```shell nautobot-server post_upgrade ``` -------------------------------- ### Install Nautobot App SSOT with Integrations Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/install.md Install the Nautobot App SSOT with specific integrations or all integrations using pip extras. ```shell # To install Cisco ACI integration: pip install nautobot-ssot[aci] # To install Arista CloudVision integration: pip install nautobot-ssot[aristacv] # To install all integrations: pip install nautobot-ssot[all] ``` -------------------------------- ### Install nautobot-ssot with Citrix ADM extras Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/citrix_adm_setup.md Install the nautobot-ssot app with the necessary dependencies for Citrix ADM integration. ```shell pip install nautobot-ssot[citrix-adm] ``` -------------------------------- ### Create Changelog Fragment - Removed Example Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/contributing.md For features that have been removed, use the 'removed' fragment type. The summary should clearly state what was removed. ```plaintext 2362.removed Removed the legacy authentication method. ``` -------------------------------- ### Configure LibreNMS Integration Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/user/integrations/librenms.md Set up the LibreNMS integration in your Nautobot configuration file. This example shows how to enable the integration and configure permitted values, IP hostname handling, and failure display. ```python PLUGINS_CONFIG = { "nautobot_ssot": { "enable_librenms": True, "librenms_permitted_values": { "role": ["network", "access", "core", "distribution"], }, "librenms_allow_ip_hostnames": False, "librenms_show_failures": True, } } ``` -------------------------------- ### Install nautobot-ssot with DNA Center Dependencies Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/dna_center_setup.md Install the nautobot-ssot app with the necessary extra dependencies for Cisco DNA Center integration. ```shell pip install nautobot-ssot[dna_center] ``` -------------------------------- ### Run Nautobot Development Server Locally Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/dev_environment.md Start the Nautobot development server using the `nautobot-server runserver` command. It's recommended to run this in a separate shell. ```shell nautobot-server runserver 0.0.0.0:8080 --insecure ``` -------------------------------- ### Create Changelog Fragment - Changed Example Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/contributing.md For changes that modify existing functionality, use the 'changed' fragment type. Ensure the summary is a complete sentence in past tense. ```plaintext 2362.changed Changed the default behavior of the reporting module. ``` -------------------------------- ### Import Common TypedDicts Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/user/modeling.md Example of how to import common TypedDict objects provided by `nautobot_ssot.contrib.typeddicts`. These pre-defined types can simplify data representation. ```python # Example from nautobot_ssot.contrib.typeddicts import LocationDict ``` -------------------------------- ### Install Nautobot SSOT with Meraki Dependencies Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/meraki_setup.md Install the nautobot-ssot app with the extra dependencies required for Cisco Meraki integration. ```shell pip install nautobot-ssot[meraki] ``` -------------------------------- ### Install nautobot-ssot with Arista CloudVision extras Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/aristacv_setup.md Install the nautobot-ssot app with the necessary dependencies for Arista CloudVision integration. This command should be run before configuring the integration. ```shell pip install nautobot-ssot[aristacv] ``` -------------------------------- ### Configure IPFabric Integration in Nautobot Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/ipfabric_setup.md Example configuration for enabling and setting up IPFabric integration within Nautobot's settings. Ensure to update environment variables for sensitive information. ```python import os from nautobot.core.settings_funcs import is_truthy PLUGINS_CONFIG = { "nautobot_ssot": { "enable_ipfabric": True, "ipfabric_api_token": os.getenv("NAUTOBOT_SSOT_IPFABRIC_API_TOKEN"), "ipfabric_host": os.getenv("NAUTOBOT_SSOT_IPFABRIC_HOST"), "ipfabric_ssl_verify": is_truthy(os.getenv("NAUTOBOT_SSOT_IPFABRIC_SSL_VERIFY", "true")), "nautobot_host": os.getenv("NAUTOBOT_HOST"), } } ``` -------------------------------- ### Install Nautobot App with Poetry Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/dev_environment.md Use this command to add a new Nautobot app to your project's dependencies using Poetry. ```bash ➜ poetry add nautobot-chatops ``` -------------------------------- ### Start Nautobot Development Environment Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/dev_environment.md Starts all Docker containers for the Nautobot development environment in detached mode. This command provisions networks and volumes as needed. ```bash ➜ invoke start ``` -------------------------------- ### Generate Release Notes with Invoke Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/release_checklist.md Automatically generate release notes using the `invoke generate-release-notes` command. This command relies on `towncrier` and requires the poetry environment to be installed. ```bash invoke generate-release-notes ``` -------------------------------- ### Inefficient Nautobot Database Load Function Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/user/performance.md This example demonstrates an inefficient way to load data, resulting in numerous individual database queries. It's useful for understanding the problem before optimization. ```python from diffsync import Adapter from nautobot.dcim.models import Region, Site, Location from my_package import ParentRegionModel, ChildRegionModel, SiteModel, LocationModel class ExampleAdapter(Adapter): parent_region = ParentRegionModel child_region = ChildRegionModel site = SiteModel location = LocationModel top_level = ("parent_region",) ... def load(self): for parent_region in Region.objects.filter(parent__isnull=True): parent_region_diffsync = self.parent_region(name=parent_region.name) self.add(parent_region_diffsync) for child_region in Region.objects.filter(parent=parent_region): child_region_diffsync = self.child_region(name=child_region.name) self.add(child_region_diffsync) parent_region_diffsync.add_child(child_region_diffsync) for site in Site.objects.filter(region=child_region): site_diffsync = self.site(name=site.name) self.add(site_diffsync) child_region_diffsync.add_child(site_diffsync) for location in Location.objects.filter(site=site): location_diffsync = self.location(name=location.name) self.add(location_diffsync) site_diffsync.add_child(location_diffsync) ``` -------------------------------- ### Create Changelog Fragment - Deprecated Example Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/contributing.md Use the 'deprecated' fragment type to indicate features that are planned for removal in future versions. Provide a clear summary of the deprecated functionality. ```plaintext 2362.deprecated Deprecated the old API endpoint for data retrieval. ``` -------------------------------- ### Create Release Branch and Bump Version Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/release_checklist.md Use these commands to create a new release branch from 'main' and bump the development version using poetry. ```bash > git switch -c release-1.4.2-to-develop main Switched to a new branch 'release-1.4.2-to-develop' > poetry version prepatch Bumping version from 1.4.2 to 1.4.3a1 > git add pyproject.toml && git commit -m "Bump version" > git push ``` -------------------------------- ### Install New SSoT App with Arista CV Extras Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/aristacv_setup.md Install the updated SSoT app, ensuring the Arista CV extras are included for the integration. ```shell pip install --upgrade nautobot-ssot[aristacv] ``` -------------------------------- ### Install Additional Python Packages Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/dev_environment.md Adds a new Python package to the project's dependencies using Poetry. After installation, the Docker environment needs to be rebuilt and restarted. ```bash ➜ poetry add ``` ```bash ➜ invoke stop ``` ```bash ➜ invoke build ``` ```bash ➜ invoke start ``` -------------------------------- ### Create ScheduledJob Objects Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/user/integrations/bootstrap.md Define ScheduledJob objects, specifying the job to schedule, interval, start time, and optional user, enabled status, task queue, and job variables. The start time must be in the future. Use with caution as disabling jobs via 'enabled: false' can make them difficult to re-enable. ```yaml scheduled_job: - name: # str interval: # str -- Options are: daily, weekly, hourly, future, custom start_time: # str -- ISO 8601 format (YYYY-MM-DD HH:MM:SS), UTC crontab: # str -- Basic Crontab syntax. Use with interval 'custom' job_model: # str -- The name of the Job you wish to schedule user: # str -- Username to run this scheduled job as enabled: # bool -- Optional, defaults to True profile: # bool -- Optional, defaults to False task_queue: # str -- Optional, celery queue name, defaults to None (default queue) job_vars: # dict -- Optional job_var1: # specific to Job job_var2: # ...etc ``` -------------------------------- ### Prepare LTM Release Branch and Version Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/release_checklist.md Commands for creating an LTM release branch, bumping the patch or minor version, and generating release notes. ```bash git switch -c release-2.4.99 ltm-2.4 patch poetry version patch invoke generate-release-notes --version 2.4.99 ``` -------------------------------- ### Access iPython Shell Plus Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/dev_environment.md Launch the iPython shell with automatic model imports for enhanced development and debugging. ```bash ➜ invoke shell-plus ``` ```bash ➜ invoke cli ➜ nautobot-server shell_plus ``` -------------------------------- ### Stage Changelog and Configuration Files Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/release_checklist.md After generating release notes, stage any remaining files that need to be included in the release commit, such as `mkdocs.yml` and `pyproject.toml`. ```bash git add mkdocs.yml pyproject.toml ``` -------------------------------- ### Run Nautobot Post-Upgrade Command Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/upgrade.md Execute this command within your Nautobot runtime environment after updating the `nautobot-ssot` package to migrate the database for any data model changes. ```bash nautobot-server post-upgrade ``` -------------------------------- ### Configure IPFabric SSoT Integration Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/ipfabric_setup.md Example of how to enable and configure the IPFabric SSoT integration in Nautobot's settings. This includes API credentials, host, SSL verification, and various optional settings for device and interface synchronization. ```python import os from nautobot.core.settings_funcs import is_truthy PLUGINS_CONFIG = { "nautobot_ssot": { "enable_ipfabric": is_truthy(os.getenv("NAUTOBOT_SSOT_ENABLE_IPFABRIC", "true")), "ipfabric_api_token": os.getenv("NAUTOBOT_SSOT_IPFABRIC_API_TOKEN"), "ipfabric_host": os.getenv("NAUTOBOT_SSOT_IPFABRIC_HOST"), "ipfabric_ssl_verify": is_truthy(os.getenv("NAUTOBOT_SSOT_IPFABRIC_SSL_VERIFY", "true")), "nautobot_host": os.getenv("NAUTOBOT_HOST"), "ipfabric_timeout": os.getenv("NAUTOBOT_SSOT_IPFABRIC_TIMEOUT"), "ipfabric_default_device_role": os.getenv("NAUTOBOT_SSOT_IPFABRIC_DEVICE_ROLE"), ``` -------------------------------- ### Configure nautobot_ssot for Citrix ADM Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/citrix_adm_setup.md Example configuration for nautobot_ssot in nautobot_config.py to enable Citrix ADM integration and control site updates. ```python PLUGINS_CONFIG = { "nautobot_ssot": { "enable_citrix_adm": is_truthy(os.getenv("NAUTOBOT_SSOT_ENABLE_CITRIX_ADM", "true")), "citrix_adm_update_sites": os.getenv("NAUTOBOT_SSOT_CITRIX_ADM_UPDATE_SITES", "true"), } } ``` -------------------------------- ### Fetch and Update Local Branches Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/release_checklist.md Ensure your local development, main, and LTM branches are synchronized with the upstream repository before starting a release. ```bash git fetch git switch develop && git pull # and repeat for main/ltm ``` -------------------------------- ### Upgrade Infoblox Integration with Extras Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/infoblox_setup.md This command upgrades the Nautobot SSOT integration to include the Infoblox extras, ensuring all necessary components are installed. ```shell pip install --upgrade nautobot-ssot[infoblox] ``` -------------------------------- ### Uninstall Old IP Fabric Plugin Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/admin/integrations/ipfabric_setup.md Use this command to remove the previous IP Fabric plugin before installing the new integrated version. ```shell pip uninstall nautobot-plugin-ssot-ipfabric ``` -------------------------------- ### Create Release Branch Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/release_checklist.md Create a new Git branch for the release, typically starting from the `develop` branch. Replace `1.4.2` with the actual version number. ```bash git switch -c release-1.4.2 develop ``` -------------------------------- ### Example Query for Many-to-One Relationship Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/user/modeling.md Illustrates the type of query the SSoT framework might generate to resolve a many-to-one relationship based on the defined model fields. ```python from nautobot.dcim.models import Location prefix = PrefixModel(network="192.0.2.0", prefix_length=26, vlan__vid=1000, vlan__group__name="Datacenter") # A query similar to the following line will be used to automatically populate the foreign key field upon `prefix.create` VLAN.objects.get(vid=prefix.vlan__vid, group__name=prefix.vlan__group__name) ``` -------------------------------- ### Run All Tests with Invoke Source: https://github.com/nautobot/nautobot-app-ssot/blob/develop/docs/dev/release_checklist.md Execute all project tests using the `invoke tests` command. This ensures the application functions as expected after dependency updates. ```bash poetry run invoke tests ```