diff --git a/.cookiecutter.json b/.cookiecutter.json index 55941943..a5d8a4ac 100644 --- a/.cookiecutter.json +++ b/.cookiecutter.json @@ -4,11 +4,11 @@ "full_name": "Network to Code, LLC", "email": "info@networktocode.com", "github_org": "nautobot", - "plugin_name": "nautobot_device_onboarding", + "app_name": "nautobot_device_onboarding", "verbose_name": "Device Onboarding", - "plugin_slug": "nautobot-device-onboarding", - "project_slug": "nautobot-plugin-device-onboarding", - "repo_url": "https://github.com/nautobot/nautobot-plugin-device-onboarding", + "app_slug": "nautobot-device-onboarding", + "project_slug": "nautobot-app-device-onboarding", + "repo_url": "https://github.com/nautobot/nautobot-app-device-onboarding", "base_url": "nautobot-device-onboarding", "min_nautobot_version": "2.0.3", "max_nautobot_version": "2.9999", @@ -21,7 +21,7 @@ "_drift_manager": { "template": "https://github.com/nautobot/cookiecutter-nautobot-app.git", "template_dir": "nautobot-app", - "template_ref": "develop", + "template_ref": "refs/tags/nautobot-app-v2.2.1", "cookie_dir": "", "branch_prefix": "drift-manager", "pull_request_strategy": "create", @@ -29,7 +29,7 @@ "black" ], "draft": true, - "baked_commit_ref": "094719b3173bd24329c250c54c586b699be5f0c1" + "baked_commit_ref": "e99ba259e45876cf5a3432b7b02f95feac3ae6ad" } } } \ No newline at end of file diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f2369400..dfa22786 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,2 +1,2 @@ -# Default owners for all files in this repository -* @mzbroch @scetron @glennmatthews @chadell +# Default owner(s) of all files in this repository +* @mzbroch @scetron @glennmatthews @chadell @housepbass diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 2a252e5a..86281176 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -7,6 +7,7 @@ about: Report a reproducible bug in the current release of nautobot-device-onboa * Python version: * Nautobot version: * nautobot-device-onboarding version: +* ntc-templates version: ### Expected Behavior @@ -15,6 +16,9 @@ about: Report a reproducible bug in the current release of nautobot-device-onboa ### Observed Behavior + + Platforms--> Add/+`. -- Define the attributes for the Platform on this screen and click on the 'Create' button. -- 'Manufacturer' and 'NAPALM arguments' are optional. +A new device can be onboarded via : + +- A SSoT job execution using the `Sync Devices from Network` job. + - Via Jobs menu + - Via SSoT Dashboard +- API, via a `POST` to `/api/extras/jobs/SSOTSyncDevices/run` or `/api/extras/jobs/{id}/run` !!! note - Slugs have been deprecated in Nautobot 2. The Platform `Network driver` will now be used to determine the driver to use. + The SSoT Job's ID (UUID) will be different per Nautobot instance. -#### Cisco NXOS Platform +During a successful onboarding process, a new device will be created in Nautobot with its management interface and its primary IP assigned. The management interface will be discovered on the device based on the IP address provided. -A Platform that will work with NXOS devices running the `nxapi` feature must have specific values for these attributes: +This SSoT job supports a bulk CSV execution option to speed up this process. -- `Network driver` **SHOULD** be `cisco_nxos`. -- `NAPALM driver` **MUST** be `nxos`. +### Consult the Status of the Sync Network Devices SSoT Job -#### Arista EOS Platform +The status of onboarding jobs can be viewed via the UI (Jobs > Job Results) or retrieved via API (`/api/extras/job-results/`) with each process corresponding to an individual Job-Result object. -A Platform that will work with Arista EOS devices must have specific values for these attributes: +### API -- `Network driver` **SHOULD** be `arista_eos`. -- `NAPALM driver` **MUST** be `eos`. +To run the SSoT Sync Devices Job via the api: -### Onboard a New Device +Post to `/api/extras/jobs/SSOTSyncDevices/run/` with the relevent onboarding data: -A new device can be onboarded via : +```bash +curl -X "POST" /api/extras/jobs/SSOTSyncDevices/run/ -H "Content-Type: application/json" -H "Authorization: Token $NAUTOBOT_TOKEN" -d '{"data": {"location": "", "ip_address": "", "port": 22, "timeout": 30}} +``` -- A job execution. -- An API, via a `POST` to `/api/extras/jobs/{id}/run` +Required Fields: + location: Location UUID + ip_address: String of IP or CSV of IPs + port: Integer + timeout: Integer -During a successful onboarding process, a new device will be created in Nautobot with its management interface and its primary IP assigned. The management interface will be discovered on the device based on the IP address provided. +Optional Fields: + credentials: Secret Group UUID + platform: Platform UUID + role: Role UUID + device_type: Device Type UUID + continue_on_failure: Boolean + +## Onboarding Interface, Vlans, IPs Etc. + +### Enhance Existing Device + +A existing devices data can be expanded to include additional objects by: + +- A SSoT job execution. + - Via Jobs menu + - Via SSoT Dashboard +- API, via a `POST` to `/api/extras/jobs/SSOTSyncNetworkData/run` or `/api/extras/jobs/{id}/run` !!! note - By default, the app is using the credentials defined in the main `nautobot_config.py` for Napalm (`NAPALM_USERNAME`/`NAPALM_PASSWORD`/`NAPALM_ARGS`). It's possible to define specific credentials for each onboarding job execution. + The SSoT Job's ID (UUID) will be different per Nautobot instance. + +During a successful network data sync process, a devices related objects will be created in Nautobot with all interfaces, their IP addresses, and optionally VLANs, and VRFs. + +### Consult the Status of the Sync Network Data SSoT Job + +The status of onboarding jobs can be viewed via the UI (Jobs > Job Results) or retrieved via API (`/api/extras/job-results/`) with each process corresponding to an individual Job-Result object. + +### API -### Onboard a Cisco NXOS Device Running the `nxapi` Feature +To run the SSoT Sync Network Data Job via the api: -When onboarding an NXOS device with the `nxapi` feature, there are a few requirements: -- The `Port` must be the same value configured for `nxapi https port` on the Cisco Nexus device -- The `Platform` must be explicitly set to be one with the specific parameters in the [Cisco NXOS Platform](#cisco-nxos-platform) section +Post to `/api/extras/jobs/SSOTSyncNetworkData/run/` with the relevent onboarding data: -### Onboarding an Arista EOS Device +```bash +curl -X "POST" /api/extras/jobs/SSOTSyncNetworkData/run/ -H "Content-Type: application/json" -H "Authorization: Token $NAUTOBOT_TOKEN" -d '{"data": {"devices": ""} +``` -When onboarding an Arista EOS device, there are a few requirements: +Required Fields: + devices: Location UUID -- The `Port` must be the same value configured for HTTPS on the Arista device -- The `Platform` must be explicitly set to be the one with the specific parameters in the [Arista EOS Platform](#arista-eos-platform) section +## Using Git(Datasources) to Override the Apps Defaults -### Consult the Status of Onboarding Tasks +By utilizing the Nautobot core feature `Datasource` the command mappers, jpaths, post_processors for each platform can be overridden. This also gives an easy way for a user to add platform support without having to get those fixes directly upstreamed into this application. -The status of the onboarding process for each device is maintained is a dedicated table in Nautobot and can be retrieved: -- Via the UI via Job-Results -- Via the API via Job-Results +The format of these YAML files are and how to extend this application is covered in [App YAML Overrides](./app_yaml_overrides.md). diff --git a/docs/user/app_use_cases_original.md b/docs/user/app_use_cases_original.md new file mode 100644 index 00000000..a918282d --- /dev/null +++ b/docs/user/app_use_cases_original.md @@ -0,0 +1,145 @@ +# Using the App + +This document describes common use-cases and scenarios for this App. + +## General Usage + +### Preparation + +To properly onboard a device, a user needs to provide, at a minimum: + +1. The Device's Location +2. The Device's primary IP address or DNS Name + +!!! note + For DNS Name Resolution to work, the instance of Nautobot must be able to resolve the name of the device to IP address. + +If other attributes (`Platform`, `Device Type`, `Role`) are provided in the onboarding job, the app will use provided value for the onboarded device. + +If `Platform`, `Device Type` and/or `Role` are not provided, the plugin will try to identify this information automatically and, based on the settings, it can create them in Nautobot as needed. + +!!! note + If the Platform is provided, it must point to an existing Nautobot Platform. NAPALM driver of this platform will be used only if it is defined for the platform in Nautobot. + To use a preferred NAPALM driver, either define it in Nautobot per platform or in the plugins settings under `platform_map`. + +#### SSH Autodetect + +The `nautobot-device-onboarding` app recognizes platform types with a Netmiko SSH Autodetect mechanism. The user may need to specify additional information for platforms where Netmiko's `ssh_autodetect` feature does not work. + +[Here is the list](https://github.com/ktbyers/netmiko/blob/v3.4.0/netmiko/ssh_autodetect.py#L50) of platforms supported by `ssh_autodetect`. + +The `nautobot-device-onboarding` app can be used with any devices that are supported by NAPALM. Even custom NAPALM driver plugins can be used with a bit of effort. + +Devices that are supported by NAPALM but are not running SSH or don't have support for `ssh_autodetect` will still work with this app, but will require some additional information in the onboarding job. + +The table below shows which common platforms will be SSH auto-detected by default. + +|Platform |Platform Autodetect| +--------------|-------------------- +Juniper/Junos | Yes (when running Netconf over SSH)| +Cisco IOS-XE |Yes| +Cisco NXOS (ssh) | Yes| +Cisco NXOS (nxapi)| No| +Arista EOS | No| + +For the platforms where SSH auto-detection does not work, the user will need to: + +1. Manually define a Platform in Nautobot (this will be a one-time task in order to support any number of devices using this Platform) +2. During onboarding, a Port and Platform must explicitly be specified (in addition to the IP and Location) + +### IOS and Junos Auto-Created Platforms + +The Onboarding App will automatically create Platforms for vendor operating systems where platform auto-detection works. The picture below shows the details of auto-created Platforms for `cisco_ios` and `juniper_junos`. + +![cisco_ios_platform](../images/platform_cisco_ios.png) +![juniper_junos_platform](../images/platform_juniper_junos.png) + + +## Use-cases and common workflows + +### Create a New Platform + +This section demonstrates how to create a new Platform in the Nautobot UI. Specifically, it offers examples for creating platforms for Cisco `nxapi` and Arista `eos` devices, but the concepts are applicable to any Platform that is manually created. + +- In the Nautobot dropdown menu, go to `Devices--> Platforms--> Add/+`. +- Define the attributes for the Platform on this screen and click on the 'Create' button. +- 'Manufacturer' and 'NAPALM arguments' are optional. + +!!! note + Slugs have been deprecated in Nautobot 2. The Platform `Network driver` will now be used to determine the driver to use. + +#### Cisco NXOS Platform + +A Platform that will work with NXOS devices running the `nxapi` feature must have specific values for these attributes: + +- `Network driver` **SHOULD** be `cisco_nxos`. +- `NAPALM driver` **MUST** be `nxos`. + +#### Arista EOS Platform + +A Platform that will work with Arista EOS devices must have specific values for these attributes: + +- `Network driver` **SHOULD** be `arista_eos`. +- `NAPALM driver` **MUST** be `eos`. + + +### Onboard a New Device + +A new device can be onboarded via : + +- A job execution. +- API, via a `POST` to `/api/extras/jobs/Perform%20Device%20Onboarding/run` or `/api/extras/jobs/{id}/run` + +!!! note + The Device Onboarding Job's ID (UUID) will be different per Nautobot instance. + +During a successful onboarding process, a new device will be created in Nautobot with its management interface and its primary IP assigned. The management interface will be discovered on the device based on the IP address provided. + +!!! note + By default, the app is using the credentials defined in the main `nautobot_config.py` for Napalm (`NAPALM_USERNAME`/`NAPALM_PASSWORD`/`NAPALM_ARGS`). It's possible to define specific credentials for each onboarding job execution. + +### Onboard a Cisco NXOS Device Running the `nxapi` Feature + +When onboarding an NXOS device with the `nxapi` feature, there are a few requirements: + +- The `Port` must be the same value configured for `nxapi https port` on the Cisco Nexus device +- The `Platform` must be explicitly set to be one with the specific parameters in the [Cisco NXOS Platform](#cisco-nxos-platform) section + +### Onboarding an Arista EOS Device + +When onboarding an Arista EOS device, there are a few requirements: + +- The `Port` must be the same value configured for HTTPS on the Arista device +- The `Platform` must be explicitly set to be the one with the specific parameters in the [Arista EOS Platform](#arista-eos-platform) section + + +### Consult the Status of Onboarding Tasks + +The status of onboarding jobs can be viewed via the UI (Jobs > Job Results) or retrieved via API (`/api/extras/job-results/`) with each process corresponding to an individual Job-Result object. + +# API + +!!! note + In V3.0, with the move of the app to a job, the dedicated API views have been removed. This also removes API documentation from the built in Swagger API documentation. + +To run an onboarding task Job via the api: + + +Post to `/api/extras/jobs/Perform%20Device%20Onboarding/run/` with the relevent onboarding data: + +```bash +curl -X "POST" /api/extras/jobs/Perform%20Device%20Onboarding/run/ -H "Content-Type: application/json" -H "Authorization: Token $NAUTOBOT_TOKEN" -d '{"data": {"location": "", "ip_address": "", "port": 22, "timeout": 30}} +``` + +Required Fields: + location: Location UUID + ip_address: String of IP or CSV of IPs + port: Integer + timeout: Integer + +Optional Fields: + credentials: Secret Group UUID + platform: Platform UUID + role: Role UUID + device_type: Device Type UUID + continue_on_failure: Boolean diff --git a/docs/user/app_yaml_overrides.md b/docs/user/app_yaml_overrides.md new file mode 100755 index 00000000..8a99cc49 --- /dev/null +++ b/docs/user/app_yaml_overrides.md @@ -0,0 +1,70 @@ +# Extending and Overriding Platform YAML Files + +One element of the new SSoT based jobs this app exposes; is the attempt to create a framework that allows the definition of each platforms dependencies in a YAML format. + +## File Format +There are only a few components to the file and they're described below: + +- `ssot job name` - Name of the job to define the commands and metadata needed for that job. (choices: `sync_devices` or `sync_network_data`) +- `root key data name` - Is fully defined in the schema definition. +- `commands` - List of commands to execute in order to get the required data. +- `command` - Actual `show` command to execute. +- `parser` - Whether to use a parser (textfsm, pyats, ttp, etc) alternatively `none` can be used if the platform supports some other method to return structured data. E.g. (`| display json`) or an equivalent. +- `jpath` - The jmespath (specifically jdiffs implementation) to extract the data from the parsed json returned from parser. +- `post_processor` - Jinja2 capable code to further transform the returned data post jpath extraction. +- `iterable_type` - A optional value to force a parsed result to a specific data type. + +As an example: + +```yaml +--- +sync_devices: + hostname: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].hostname" + post_processor: "{{ obj[0] | upper }}" +..omitted.. +``` + +If there is only one command that needs to be run, the code base also accepts that in a dictionary format. + +```yaml +--- +sync_devices: + hostname: + commands: + command: "show version" + parser: "textfsm" + jpath: "[*].hostname" + post_processor: "{{ obj[0] | upper }}" +..omitted.. +``` + +## Using Datasource to Override + +This App provides sane defaults that have been tested, the files are located in the source code under `command_mappers`. There is potential for these sane defaults to not work in a given environment; alternatively you may want to add additional platform support in your deployment. These are the two main use cases to utilize the datasource feature this app exposes. + +!!! info + To avoid overly complicating the merge logic, the App will always prefer the platform specific YAML file loaded in from the git repository. + +!!! warn + Partial YAML file merging is not supported. Meaning you can't only overload `sync_devices` definition and inherit `sync_network_data` definition. + +### Properly Formatting Git Repository + +When loading from a Git Repository this App is expecting a root directory called `onboarding_command_mappers`. Each of the platform YAML files are then located in this directory. The YAML file names must be named `.yml`. Where network_driver must exist in the netutils mapping exposed from Nautobot core. + +To quickly get a list run: + +```python +from nautobot.dcim.utils import get_all_network_driver_mappings + +sorted(list(get_all_network_driver_mappings().keys())) +``` + +### Setting up the Git Repository + +1. Extensibility -> Git Repositories +2. Create a new repository, most importantly selecting the `Provides` of `Network Sync Job Command Mappers` diff --git a/docs/user/external_interactions.md b/docs/user/external_interactions.md index d167706b..891ddcd8 100644 --- a/docs/user/external_interactions.md +++ b/docs/user/external_interactions.md @@ -6,4 +6,5 @@ This document describes external dependencies and prerequisites for this App to ### From the App to Other Systems -The App uses [netmiko](https://github.com/ktbyers/netmiko) and [NAPALM](https://napalm.readthedocs.io/en/latest/) libraries to connect to network devices. +- The App uses [netmiko](https://github.com/ktbyers/netmiko) and [NAPALM](https://napalm.readthedocs.io/en/latest/) libraries to connect to network devices. +- Git integrations(optional) allow a user to override default Command Getter YAML files. diff --git a/docs/user/faq.md b/docs/user/faq.md index 2cf8fe66..6e9af9ba 100644 --- a/docs/user/faq.md +++ b/docs/user/faq.md @@ -16,7 +16,7 @@ You need to disable automatic platform detection, specify the device platform ty ## Is it possible to disable the automatic creation of Device Type, Device Role or Platform? -**Yes**! Using the plugin settings, it's possible to control individually the creation of `device_role`, `device_type`, `manufacturer` & `platform`. +**Yes** (original)! Using the plugin settings, it's possible to control individually the creation of `device_role`, `device_type`, `manufacturer` & `platform`. ```python # configuration.py @@ -32,12 +32,16 @@ PLUGINS_CONFIG = { } ``` +**Yes** (SSoT)! Using the job for input selections, it's possible to control individually the creation of `device_role`, `device_type`, `manufacturer` & `platform`. + ## How can I update the default credentials used to connect to a device? By default, the plugin uses the credentials defined in the main `nautobot_config.py` for NAPALM (`NAPALM_USERNAME`/`NAPALM_PASSWORD`/`DEVICE_ARGS`). You can update the default credentials in `nautobot_config.py ` or you can provide specific one for each onboarding job via a SecretsGroup. If using SecretsGroup the Access Type for the associated Secrets must be `Generic` and at minimum associated Secrets for `Username` & `Password` are required with `Secret` being optional. !!! warning - If an enable secret is required for the remote device it must be set using above patters. + If an enable secret is required for the remote device it must be set using above patterns. + +For the SSoT onboarding based jobs SecretGroups are required. ## How can I update the optional arguments for NAPALM? @@ -45,10 +49,7 @@ Optional arguments are often used to define a `secret` for Cisco devices and oth ## Does this app support the discovery and the creation of all interfaces and IP Addresses? -**No**. The plugin will only discover and create the management interface and the management IP address. Importing all interfaces and IP addresses is a much larger problem that requires more preparation. This is out of scope of this project. - -!!! tip - We recommend Network Importer tool from Network to Code for a post-onboarding network state synchronization. See [its GitHub repository](https://github.com/networktocode/network-importer) for more details. +**Yes**. The original Deivce Onboarding job/SSot Sync Devices will only discover and create the management interface and the management IP address. Importing all interfaces and IP addresses is available from the SSoT job (Sync Network Data). ## Does this app support the discovery of device based on fqdn? diff --git a/mkdocs.yml b/mkdocs.yml index 92c87784..2fa3f308 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,10 +1,10 @@ --- dev_addr: "127.0.0.1:8001" -edit_uri: "edit/main/nautobot-plugin-device-onboarding/docs" +edit_uri: "edit/main/nautobot-app-device-onboarding/docs" site_dir: "nautobot_device_onboarding/static/nautobot_device_onboarding/docs" site_name: "Device Onboarding Documentation" site_url: "https://docs.nautobot.com/projects/device-onboarding/en/latest/" -repo_url: "https://github.com/nautobot/nautobot-plugin-device-onboarding" +repo_url: "https://github.com/nautobot/nautobot-app-device-onboarding" copyright: "Copyright © The Authors" theme: name: "material" @@ -102,8 +102,10 @@ nav: - App Overview: "user/app_overview.md" - Getting Started: "user/app_getting_started.md" - Using the App: "user/app_use_cases.md" + - Using the App (Original): "user/app_use_cases_original.md" - Frequently Asked Questions: "user/faq.md" - External Interactions: "user/external_interactions.md" + - Detailed Design: "user/app_detailed_design.md" - Administrator Guide: - Install and Configure: "admin/install.md" - Upgrade: "admin/upgrade.md" @@ -111,6 +113,7 @@ nav: - Compatibility Matrix: "admin/compatibility_matrix.md" - Release Notes: - "admin/release_notes/index.md" + - v4.0: "admin/release_notes/version_4.0.md" - v3.0: "admin/release_notes/version_3.0.md" - v2.0: "admin/release_notes/version_2.0.md" - v1.2: "admin/release_notes/version_1.2.md" @@ -118,9 +121,11 @@ nav: - v1.0: "admin/release_notes/version_1.0.md" - Developer Guide: - Extending the App: "dev/extending.md" + - YAML Overrides: "user/app_yaml_overrides.md" - Onboarding Extensions: "dev/onboarding_extensions.md" - Contributing to the App: "dev/contributing.md" - Development Environment: "dev/dev_environment.md" + - Architecture Decision Records: "dev/arch_decision.md" - Code Reference: - "dev/code_reference/index.md" - Package: "dev/code_reference/package.md" diff --git a/nautobot_device_onboarding/__init__.py b/nautobot_device_onboarding/__init__.py index e993858b..3af1124b 100644 --- a/nautobot_device_onboarding/__init__.py +++ b/nautobot_device_onboarding/__init__.py @@ -1,23 +1,26 @@ -"""Plugin declaration for nautobot_device_onboarding.""" -# Metadata is inherited from Nautobot. If not including Nautobot in the environment, this should be added +"""App declaration for nautobot_device_onboarding.""" + +# Metadata is inherited from Nautobot +# If not including Nautobot in the environment, this should be added from importlib import metadata -__version__ = metadata.version(__name__) +from nautobot.apps import NautobotAppConfig -from nautobot.extras.plugins import NautobotAppConfig +__version__ = metadata.version(__name__) class NautobotDeviceOnboardingConfig(NautobotAppConfig): - """Plugin configuration for the nautobot_device_onboarding plugin.""" + """App configuration for the nautobot_device_onboarding app.""" name = "nautobot_device_onboarding" verbose_name = "Device Onboarding" version = __version__ author = "Network to Code, LLC" - description = "Nautobot App that simplifies device onboarding (and re-onboarding) by collecting and populating common device 'facts' into Nautobot." + description = "Nautobot App that simplifies device onboarding (and re-onboarding) by \ + collecting and populating common device 'facts' into Nautobot." base_url = "nautobot-device-onboarding" required_settings = [] - min_version = "2.0.3" + min_version = "2.1.1" max_version = "2.9999" default_settings = { "create_platform_if_missing": True, @@ -34,6 +37,8 @@ class NautobotDeviceOnboardingConfig(NautobotAppConfig): "skip_device_type_on_update": False, "skip_manufacturer_on_update": False, "platform_map": {}, + "assign_secrets_group": False, + "set_management_only_interface": False, "onboarding_extensions_map": { "ios": "nautobot_device_onboarding.onboarding_extensions.ios", }, diff --git a/nautobot_device_onboarding/choices.py b/nautobot_device_onboarding/choices.py new file mode 100755 index 00000000..24741fe1 --- /dev/null +++ b/nautobot_device_onboarding/choices.py @@ -0,0 +1,7 @@ +"""Choices used througout the app.""" + +SSOT_JOB_TO_COMMAND_CHOICE = ( + ("sync_devices", "Sync Devices"), + ("sync_network_data", "Sync Network Data"), + ("both", "Both"), +) diff --git a/nautobot_device_onboarding/command_mappers/arista_eos.yml b/nautobot_device_onboarding/command_mappers/arista_eos.yml new file mode 100755 index 00000000..ef72954e --- /dev/null +++ b/nautobot_device_onboarding/command_mappers/arista_eos.yml @@ -0,0 +1,118 @@ +--- +sync_devices: + hostname: + commands: + command: "show hostname" + parser: "textfsm" + jpath: "[*].hostname" + serial: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].serial_number" + device_type: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].model" + mgmt_interface: + commands: + - command: "show ip interface brief | json" + parser: "none" + jpath: "interfaces.*.{name: name, match_ip: interfaceAddress.ipAddr.address==`{{ obj }}`}[?match_ip].name" + mask_length: + commands: + - command: "show ip interface brief | json" + parser: "none" + jpath: "interfaces.*.interfaceAddress[?ipAddr.address==`{{ obj }}`].ipAddr.maskLen" + post_processor: "{{ obj[0] }}" + iterable_type: "int" +sync_network_data: + pre_processor: + vlan_map: + commands: + - command: "show vlan configured-ports | json" + parser: "none" + jpath: "vlans" + post_processor: "{{ obj | flatten_dict_from_value('name') | tojson }}" + serial: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].serial_number" + interfaces: + root_key: true + commands: + - command: "show interfaces | json" + parser: "none" + jpath: "interfaces.*.name" # when root_key=true this extracted value is what becomes iterable in keys using __ under `current_key`. + post_processor: "{% set result={} %}{% for interface in obj %}{{ result.update({interface: {}}) or '' }}{% endfor %}{{ result | tojson }}" + interfaces__type: + commands: + - command: "show interfaces | json" + parser: "none" + jpath: 'interfaces."{{ current_key }}".hardware' # yamllint disable-line rule:quoted-strings + post_processor: "{{ obj | map_interface_type }}" + interfaces__ip_addresses: + commands: + - command: "show interfaces | json" + parser: "none" + jpath: 'interfaces."{{ current_key }}".interfaceAddress[].[{ip_address: primaryIp.address, prefix_length: primaryIp.maskLen }][]' # yamllint disable-line rule:quoted-strings + post_processor: "{{ obj | tojson }}" + interfaces__mtu: + commands: + - command: "show interfaces | json" + parser: "none" + jpath: 'interfaces."{{ current_key }}".[mtu]' # yamllint disable-line rule:quoted-strings + post_processor: "{{ obj[0] }}" + iterable_type: "str" + interfaces__mac_address: + commands: + - command: "show interfaces | json" + parser: "none" + jpath: 'interfaces."{{ current_key }}".physicalAddress' # yamllint disable-line rule:quoted-strings + interfaces__description: + commands: + - command: "show interfaces | json" + parser: "none" + jpath: 'interfaces."{{ current_key }}".description' # yamllint disable-line rule:quoted-strings + iterable_type: "str" + interfaces__link_status: + commands: + - command: "show interfaces | json" + parser: "none" + jpath: 'interfaces."{{ current_key }}".lineProtocolStatus' # yamllint disable-line rule:quoted-strings + post_processor: "{{ obj | interface_status_to_bool }}" + interfaces__802.1Q_mode: + commands: + - command: "show interfaces switchport | json" + parser: "none" + jpath: '{admin_mode: switchports."{{ current_key }}".switchportInfo.mode, mode: switchports."{{ current_key }}".switchportInfo.mode, trunking_vlans: switchports."{{ current_key }}".switchportInfo.trunkAllowedVlans}' # yamllint disable-line rule:quoted-strings + post_processor: "{{ obj | interface_mode_logic }}" + iterable_type: "str" + interfaces__lag: + commands: + - command: "show interfaces | json" + parser: "none" + jpath: 'interfaces."{{ current_key }}".interfaceMembership' # yamllint disable-line rule:quoted-strings + post_processor: "{% if obj | length > 0 %}{{ obj.split()[-1] }}{% else %}{{ obj }}{% endif %}" + interfaces__vrf: + commands: + - command: "show ip interface | json" + parser: "none" + jpath: "interfaces.*.{name: name, vrf: vrf}[?name==`{{ current_key }}`].{name: vrf}" + post_processor: "{% if obj | length > 0 %}{{ obj[0] | tojson }}{% else %}{{ obj }}{% endif %}" + iterable_type: "dict" + interfaces__tagged_vlans: + commands: + - command: "show interfaces switchport | json" + parser: "none" + jpath: '{admin_mode: switchports."{{ current_key }}".switchportInfo.mode, mode: switchports."{{ current_key }}".switchportInfo.mode, access_vlan: switchports."{{ current_key }}".switchportInfo.accessVlanId, trunking_vlans: switchports."{{ current_key }}".switchportInfo.trunkAllowedVlans, native_vlan: switchports."{{ current_key }}".switchportInfo.trunkingNativeVlanId}' # yamllint disable-line rule:quoted-strings + post_processor: "{{ obj | get_vlan_data(vlan_map, 'tagged') | tojson }}" + interfaces__untagged_vlan: + commands: + - command: "show interfaces switchport | json" + parser: "none" + jpath: '{admin_mode: switchports."{{ current_key }}".switchportInfo.mode, mode: switchports."{{ current_key }}".switchportInfo.mode, access_vlan: switchports."{{ current_key }}".switchportInfo.accessVlanId, trunking_vlans: switchports."{{ current_key }}".switchportInfo.trunkAllowedVlans, native_vlan: switchports."{{ current_key }}".switchportInfo.trunkingNativeVlanId}' # yamllint disable-line rule:quoted-strings + post_processor: "{{ obj | get_vlan_data(vlan_map, 'untagged') | tojson }}" + iterable_type: "dict" diff --git a/nautobot_device_onboarding/command_mappers/cisco_ios.yml b/nautobot_device_onboarding/command_mappers/cisco_ios.yml new file mode 100755 index 00000000..5d7734dc --- /dev/null +++ b/nautobot_device_onboarding/command_mappers/cisco_ios.yml @@ -0,0 +1,131 @@ +--- +sync_devices: + hostname: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].hostname" + serial: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].serial[]" + post_processor: "{{ obj | unique | first }}" + iterable_type: "str" + device_type: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].hardware[]" + post_processor: "{{ obj | unique | first }}" + iterable_type: "str" + mgmt_interface: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?ip_address=='{{ obj }}'].{name: interface, enabled: link_status}" + post_processor: "{{ (obj | selectattr('enabled', 'eq', 'up') | list | first ).name }}" + mask_length: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?ip_address=='{{ obj }}'].prefix_length" + post_processor: "{{ obj | unique | first }}" + iterable_type: "int" +sync_network_data: + pre_processor: + vlan_map: + commands: + - command: "show vlan" + parser: "textfsm" + # Since we use the jdiff custom jmespath we have access to save keys with $ syntax. + jpath: "[*].[$vlan_id$,vlan_name]" + post_processor: "{{ obj | flatten_list_of_dict_from_value('vlan_name') | tojson }}" + serial: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].serial[]" + post_processor: "{{ obj | unique | first }}" + iterable_type: "str" + interfaces: + root_key: true + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[*].interface" # when root_key=true this extracted value is what becomes interable in keys using __ under `current_key`. + post_processor: "{% set result={} %}{% for interface in obj %}{{ result.update({interface: {}}) or '' }}{% endfor %}{{ result | tojson }}" + interfaces__type: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].hardware_type" + post_processor: "{{ obj[0] | map_interface_type }}" + interfaces__ip_addresses: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].{ip_address: ip_address, prefix_length: prefix_length}" + iterable_type: "list" + interfaces__mtu: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].mtu" + iterable_type: "str" + interfaces__mac_address: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].mac_address" + interfaces__description: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].description" + interfaces__link_status: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].link_status" + post_processor: "{{ obj[0] | interface_status_to_bool }}" + interfaces__802.1Q_mode: + commands: + - command: "show interfaces switchport" + parser: "textfsm" + jpath: "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, trunking_vlans: trunking_vlans}" + post_processor: "{{ obj | interface_mode_logic }}" + iterable_type: "str" + interfaces__lag: + commands: + - command: "show etherchannel summary" + parser: "textfsm" + jpath: "[?contains(@.member_interface, `{{ current_key | abbreviated_interface_name }}`)].bundle_name" + post_processor: "{% if obj | length > 0 %}{{ obj[0] | canonical_interface_name }}{% else %}{{ obj }}{% endif %}" + iterable_type: "str" + interfaces__vrf: + commands: + - command: "show ip interface" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].{name:vrf}" + post_processor: "{% if obj | length > 0 %}{{ obj[0] | key_exist_or_default('name') | tojson }}{% else %}{{ obj }}{% endif %}" + iterable_type: "dict" + interfaces__tagged_vlans: + commands: + - command: "show interfaces switchport" + parser: "textfsm" + jpath: "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, access_vlan: access_vlan, trunking_vlans: trunking_vlans, native_vlan: native_vlan}" + post_processor: "{{ obj | get_vlan_data(vlan_map, 'tagged') | tojson }}" + interfaces__untagged_vlan: + commands: + - command: "show interfaces switchport" + parser: "textfsm" + jpath: "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, access_vlan: access_vlan, trunking_vlans: trunking_vlans, native_vlan: native_vlan}" + post_processor: "{{ obj | get_vlan_data(vlan_map, 'untagged') | tojson }}" + iterable_type: "dict" + cables: + commands: + - command: "show cdp neighbors detail" + parser: "textfsm" + jpath: "[*].{local_interface:local_interface, remote_interface:neighbor_interface, remote_device:neighbor_name}" + post_processor: "{% set result = [] %}{% for cable in obj %}{% set _=result.append({'local_interface': cable['local_interface'], 'remote_interface': cable['remote_interface'], 'remote_device': cable['remote_device'] | remove_fqdn }) %}{% endfor %}{{ result | tojson }}" diff --git a/nautobot_device_onboarding/command_mappers/cisco_nxos.yml b/nautobot_device_onboarding/command_mappers/cisco_nxos.yml new file mode 100755 index 00000000..e0f672a4 --- /dev/null +++ b/nautobot_device_onboarding/command_mappers/cisco_nxos.yml @@ -0,0 +1,124 @@ +--- +sync_devices: + hostname: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].hostname" + serial: + commands: + - command: "show inventory" + parser: "textfsm" + jpath: "[?name=='Chassis'].sn" + device_type: + commands: + - command: "show inventory" + parser: "textfsm" + jpath: "[?name=='Chassis'].descr" + mgmt_interface: + commands: + - command: "show ip interface brief vrf all" + parser: "textfsm" + jpath: "[?ip_address=='{{ obj }}'].interface || [`mgmt0`]" + mask_length: + commands: + - command: "show ip interface vrf all" + parser: "textfsm" + jpath: "[?ip_address=='{{ obj }}'].subnet" + post_processor: "{% if '/' in obj[0] %}{{ obj[0].split('/')[1] }}{% else %}31{% endif %}" + iterable_type: "int" +sync_network_data: + pre_processor: + vlan_map: + commands: + - command: "show vlan" + parser: "textfsm" + # Since we use the jdiff custom jmespath we have access to save keys with $ syntax. + jpath: "[*].[$vlan_id$,vlan_name]" + post_processor: "{{ obj | flatten_list_of_dict_from_value('vlan_name') | tojson }}" + serial: + commands: + - command: "show inventory" + parser: "textfsm" + jpath: "[?name=='Chassis'].sn" + interfaces: + root_key: true + commands: + - command: "show interface" + parser: "textfsm" + jpath: "[*].interface" # when root_key=true this extracted value is what becomes interable in keys using __ under `current_key`. + post_processor: "{% set result={} %}{% for interface in obj %}{{ result.update({interface: {}}) or '' }}{% endfor %}{{ result | tojson }}" + interfaces__type: + commands: + - command: "show interface" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].hardware_type" + post_processor: "{{ obj[0] | map_interface_type }}" + interfaces__ip_addresses: + commands: + - command: "show ip interface vrf all" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].{ip_address: ip_address, prefix_length: subnet}" + post_processor: "{% set result = [] %}{% for ip in obj %}{% set _=result.append({'ip_address': ip['ip_address'], 'prefix_length': ip['prefix_length'] | extract_prefix }) %}{% endfor %}{{ result | tojson }}" + iterable_type: "list" + interfaces__mtu: + commands: + - command: "show interface" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].mtu" + iterable_type: "str" + interfaces__mac_address: + commands: + - command: "show interface" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].mac_address" + interfaces__description: + commands: + - command: "show interface" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].description" + interfaces__link_status: + commands: + - command: "show interface" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].link_status" + post_processor: "{{ obj[0] | interface_status_to_bool }}" + interfaces__802.1Q_mode: + commands: + - command: "show interface" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].mode" + post_processor: "{% if obj | length > 0 %}{{ obj[0] | port_mode_to_nautobot }}{% else %}{{ obj }}{% endif %}" + iterable_type: "str" + interfaces__lag: + commands: + - command: "show port-channel summary" + parser: "textfsm" + jpath: "[?contains(@.member_interface, `{{ current_key | abbreviated_interface_name }}`)].bundle_name" + post_processor: "{% if obj | length > 0 %}{{ obj[0] | canonical_interface_name }}{% else %}[]{% endif %}" + iterable_type: "str" + interfaces__vrf: + commands: + - command: "show vrf interface" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].{name:name}" + iterable_type: "dict" + interfaces__tagged_vlans: + commands: + - command: "show interface switchport" + parser: "textfsm" + jpath: "[?INTERFACE=='{{ current_key }}'].{admin_mode: MODE, mode: MODE, access_vlan: ACCESS_VLAN, trunking_vlans: TRUNKING_VLANS, native_vlan: NATIVE_VLAN}" + post_processor: "{{ obj | get_vlan_data(vlan_map, 'tagged') | tojson }}" + interfaces__untagged_vlan: + commands: + - command: "show interface switchport" + parser: "textfsm" + jpath: "[?INTERFACE=='{{ current_key }}'].{admin_mode: MODE, mode: MODE, access_vlan: ACCESS_VLAN, trunking_vlans: TRUNKING_VLANS, native_vlan: NATIVE_VLAN}" + post_processor: "{{ obj | get_vlan_data(vlan_map, 'untagged') | tojson }}" + iterable_type: "dict" + cables: + commands: + - command: "show cdp neighbors detail" + parser: "textfsm" + jpath: "[*].{local_interface:local_interface, remote_interface:neighbor_interface, remote_device:neighbor_name}" + post_processor: "{% set result = [] %}{% for cable in obj %}{% set _=result.append({'local_interface': cable['local_interface'], 'remote_interface': cable['remote_interface'], 'remote_device': cable['remote_device'] | remove_fqdn }) %}{% endfor %}{{ result | tojson }}" diff --git a/nautobot_device_onboarding/command_mappers/cisco_wlc.yml b/nautobot_device_onboarding/command_mappers/cisco_wlc.yml new file mode 100755 index 00000000..67aa9309 --- /dev/null +++ b/nautobot_device_onboarding/command_mappers/cisco_wlc.yml @@ -0,0 +1,29 @@ +--- +sync_devices: + hostname: + commands: + - command: "show sysinfo" + parser: "textfsm" + jpath: "[*].system_name" + serial: + commands: + - command: "show inventory" + parser: "textfsm" + jpath: "[*].sn" + device_type: + commands: + - command: "show inventory" + parser: "textfsm" + jpath: "[*].pid" + mgmt_interface: + commands: + - command: "show interface detailed management" + parser: "textfsm" + jpath: "[*].interface_name" + mask_length: + commands: + - command: "show interface detailed management" + parser: "textfsm" + jpath: "[*].netmask" + post_processor: "{% if obj | length > 0 %}{{ obj[0] | netmask_to_cidr }}{% else %}{{ obj }}{% endif %}" + iterable_type: "int" diff --git a/nautobot_device_onboarding/command_mappers/cisco_xe.yml b/nautobot_device_onboarding/command_mappers/cisco_xe.yml new file mode 100755 index 00000000..aa1e5c8a --- /dev/null +++ b/nautobot_device_onboarding/command_mappers/cisco_xe.yml @@ -0,0 +1,128 @@ +--- +sync_devices: + hostname: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].hostname" + serial: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].serial[]" + post_processor: "{{ obj | unique | first }}" + device_type: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].hardware[]" + post_processor: "{{ obj | unique | first }}" + mgmt_interface: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?ip_address=='{{ obj }}'].{name: interface, enabled: link_status}" + post_processor: "{{ (obj | selectattr('enabled', 'eq', 'up') | list | first ).name }}" + mask_length: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?ip_address=='{{ obj }}'].prefix_length" + post_processor: "{{ obj | unique | first }}" + iterable_type: "int" +sync_network_data: + pre_processor: + vlan_map: + commands: + - command: "show vlan" + parser: "textfsm" + # Since we use the jdiff custom jmespath we have access to save keys with $ syntax. + jpath: "[*].[$vlan_id$,vlan_name]" + post_processor: "{{ obj | flatten_list_of_dict_from_value('vlan_name') | tojson }}" + serial: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].serial[]" + post_processor: "{{ obj | unique | first }}" + interfaces: + root_key: true + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[*].interface" # when root_key=true this extracted value is what becomes interable in keys using __ under `current_key`. + post_processor: "{% set result={} %}{% for interface in obj %}{{ result.update({interface: {}}) or '' }}{% endfor %}{{ result | tojson }}" + interfaces__type: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].hardware_type" + post_processor: "{{ obj[0] | map_interface_type }}" + interfaces__ip_addresses: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].{ip_address: ip_address, prefix_length: prefix_length}" + iterable_type: "list" + interfaces__mtu: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].mtu" + iterable_type: "str" + interfaces__mac_address: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].mac_address" + interfaces__description: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].description" + interfaces__link_status: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].link_status" + post_processor: "{{ obj[0] | interface_status_to_bool }}" + interfaces__802.1Q_mode: + commands: + - command: "show interfaces switchport" + parser: "textfsm" + jpath: "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, trunking_vlans: trunking_vlans}" + post_processor: "{{ obj | interface_mode_logic }}" + iterable_type: "str" + interfaces__lag: + commands: + - command: "show etherchannel summary" + parser: "textfsm" + jpath: "[?contains(@.member_interface, `{{ current_key | abbreviated_interface_name }}`)].bundle_name" + post_processor: "{% if obj | length > 0 %}{{ obj[0] | canonical_interface_name }}{% else %}{{ obj }}{% endif %}" + iterable_type: "str" + interfaces__vrf: + commands: + - command: "show ip interface" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].{name:vrf}" + post_processor: "{% if obj | length > 0 %}{{ obj[0] | key_exist_or_default('name') | tojson }}{% else %}{{ obj }}{% endif %}" + iterable_type: "dict" + interfaces__tagged_vlans: + commands: + - command: "show interfaces switchport" + parser: "textfsm" + jpath: "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, access_vlan: access_vlan, trunking_vlans: trunking_vlans, native_vlan: native_vlan}" + post_processor: "{{ obj | get_vlan_data(vlan_map, 'tagged') | tojson }}" + interfaces__untagged_vlan: + commands: + - command: "show interfaces switchport" + parser: "textfsm" + jpath: "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, access_vlan: access_vlan, trunking_vlans: trunking_vlans, native_vlan: native_vlan}" + post_processor: "{{ obj | get_vlan_data(vlan_map, 'untagged') | tojson }}" + iterable_type: "dict" + cables: + commands: + - command: "show cdp neighbors detail" + parser: "textfsm" + jpath: "[*].{local_interface:local_interface, remote_interface:neighbor_interface, remote_device:neighbor_name}" + post_processor: "{% set result = [] %}{% for cable in obj %}{% set _=result.append({'local_interface': cable['local_interface'], 'remote_interface': cable['remote_interface'], 'remote_device': cable['remote_device'] | remove_fqdn }) %}{% endfor %}{{ result | tojson }}" diff --git a/nautobot_device_onboarding/command_mappers/juniper_junos.yml b/nautobot_device_onboarding/command_mappers/juniper_junos.yml new file mode 100755 index 00000000..74e79ef9 --- /dev/null +++ b/nautobot_device_onboarding/command_mappers/juniper_junos.yml @@ -0,0 +1,119 @@ +--- +sync_devices: + hostname: + commands: + - command: "show version | display json" + parser: "none" + jpath: '"software-information"[]."host-name"[].data' # yamllint disable-line rule:quoted-strings + serial: + commands: + - command: "show chassis hardware | display json" + parser: "none" + jpath: '"chassis-inventory"[]."chassis"[]."serial-number"[].data' # yamllint disable-line rule:quoted-strings + device_type: + commands: + - command: "show chassis hardware | display json" + parser: "none" + jpath: '"chassis-inventory"[]."chassis"[]."description"[].data' # yamllint disable-line rule:quoted-strings + mgmt_interface: + commands: + - command: "show interfaces terse | display json" + parser: "none" + jpath: '"interface-information"[]."physical-interface"[]."logical-interface"[].{name: name[].data, ip: "address-family"[]."interface-address"[]."ifa-local"[].data}' # yamllint disable-line rule:quoted-strings + post_processor: "{% for entry in obj %}{% if entry['ip'] %}{% for ipaddr in entry['ip'] %}{% if original_host in ipaddr %}{{ entry['name'] | first }}{% endif %}{% endfor %}{% endif %}{% endfor %}" + mask_length: + commands: + - command: "show route protocol direct | display json" + parser: "none" + jpath: '"route-information"[]."route-table"[]."rt"[]."rt-destination"[].data' # yamllint disable-line rule:quoted-strings + post_processor: "{% set mask = [] %}{% for ip_route in obj %}{% if ip_route | is_network %}{% if ip_route | ipaddress_network('version') == 4 %}{% if original_host | is_ip_within(ip_route) %}{% set _=mask.append(ip_route.split('/')[1]) %}{% endif %}{% endif %}{% endif %}{% endfor %}{{ mask | unique | first}}" + iterable_type: "int" +sync_network_data: + serial: + commands: + - command: "show chassis hardware | display json" + parser: "none" + jpath: '"chassis-inventory"[]."chassis"[]."serial-number"[].data' # yamllint disable-line rule:quoted-strings + interfaces: + root_key: true + commands: + - command: "show interfaces | display json" + parser: "none" + # when root_key=true this extracted value is what becomes interable in keys using __ under `current_key`. + jpath: '"interface-information"[]."physical-interface"[].[name[].data, "logical-interface"[].name[].data][][]' # yamllint disable-line rule:quoted-strings + post_processor: "{% set result={} %}{% for interface in obj %}{{ result.update({interface: {}}) or '' }}{% endfor %}{{ result | tojson }}" + interfaces__type: + commands: + - command: "show interfaces | display json" + parser: "none" + jpath: '"interface-information"[]["physical-interface"[?name[?data==`{{ current_key.split(".")[0] }}`]]][][]."link-level-type"[].data' # yamllint disable-line rule:quoted-strings + post_processor: "{% if 'ae' in current_key %}lag{% elif obj | length > 0 %}{{ obj[0] | map_interface_type }}{% else %}other{% endif %}" + iterable_type: "str" + interfaces__ip_addresses: + commands: + - command: "show interfaces | display json" + parser: "none" + jpath: '"interface-information"[]."physical-interface"[].["logical-interface"[?name[?data==`{{ current_key }}`]]][][].{prefix_length: "address-family"[]."interface-address"[]."ifa-destination"[].data, ip_address: "address-family"[]."interface-address"[]."ifa-local"[].data}' # yamllint disable-line rule:quoted-strings + post_processor: "{{ obj | parse_junos_ip_address | tojson }}" + interfaces__mtu: + commands: + - command: "show interfaces | display json" + parser: "none" + jpath: '"interface-information"[]["physical-interface"[?name[?data==`{{ current_key.split(".")[0] }}`]]][][]."mtu"[].data' # yamllint disable-line rule:quoted-strings + post_processor: "{% if obj | length > 0 %}{% if 'nlimited' in obj[0] %}9192{% else %}{{ obj[0] }}{% endif %}{% endif %}" + iterable_type: "str" + interfaces__mac_address: + commands: + - command: "show interfaces | display json" + parser: "none" + jpath: '"interface-information"[]["physical-interface"[?name[?data==`{{ current_key }}`]]][][]."hardware-physical-address"[].data' # yamllint disable-line rule:quoted-strings + interfaces__description: + commands: + - command: "show interfaces | display json" + parser: "none" + jpath: '"interface-information"[]["physical-interface"[?name[?data==`{{ current_key }}`]]][][]."description"[].data' # yamllint disable-line rule:quoted-strings + iterable_type: "str" + interfaces__link_status: + commands: + - command: "show interfaces | display json" + parser: "none" + jpath: '"interface-information"[]["physical-interface"[?name[?data==`{{ current_key.split(".")[0] }}`]]][][]."admin-status"[].data' # yamllint disable-line rule:quoted-strings + post_processor: "{% if obj | length > 0 %}{{ obj[0] | interface_status_to_bool }}{% else %}{{ obj }}{% endif %}" + interfaces__802.1Q_mode: + commands: + - command: "show interfaces | display json" + parser: "none" + jpath: '"interface-information"[]["physical-interface"[?name[?data==`{{ current_key }}`]]][][]."todo"[].data' # yamllint disable-line rule:quoted-strings + iterable_type: "str" + interfaces__lag: + commands: + - command: "show interfaces | display json" + parser: "none" + jpath: '"interface-information"[].["physical-interface"[?name[?data==`{{ current_key }}`]]][][]."logical-interface"[]."address-family"[]."ae-bundle-name"[].data' # yamllint disable-line rule:quoted-strings + post_processor: "{% if obj | length > 0 %}{{ obj[0].split('.')[0] }}{% else %}{{ obj }}{% endif %}" + interfaces__vrf: + commands: + - command: "show interfaces routing-instance all terse | display json" + parser: "none" + jpath: '"interface-information"[]."physical-interface"[]["logical-interface"[?name[?data==`{{ current_key }}`]]][][].{name: "vrfname"[0].data}' # yamllint disable-line rule:quoted-strings + iterable_type: "dict" + # Vlans on JUNOS are a bit hit or miss show ethernet-switching vs show vlans vs neither working also in most cases JUNOS aren't used in access land. + interfaces__tagged_vlans: + commands: + - command: "show vlans | display json" + parser: "textfsm" + jpath: "[?contains(interfaces, `{{ current_key }}`*)].{admin_mode: admin_mode, mode: mode, access_vlan: access_vlan, trunking_vlans: trunking_vlans, native_vlan: native_vlan}" + post_processor: "{{ obj | get_vlan_data(vlan_map, 'tagged') | tojson }}" + interfaces__untagged_vlan: + commands: + - command: "show vlans | display json" + parser: "textfsm" + jpath: "[?contains(interfaces, `{{ current_key }}`*)].{admin_mode: admin_mode, mode: mode, access_vlan: access_vlan, trunking_vlans: trunking_vlans, native_vlan: native_vlan}" + post_processor: "{{ obj | get_vlan_data(vlan_map, 'untagged') | tojson }}" + cables: + commands: + - command: "show lldp neighbors | display json" + parser: "none" + jpath: '"lldp-neighbors-information"[]."lldp-neighbor-information"[].{local_interface: "lldp-local-port-id"[0].data, remote_interface: "lldp-remote-port-id"[0].data, remote_device: "lldp-remote-system-name"[0].data}' # yamllint disable-line rule:quoted-strings + post_processor: "{% set result = [] %}{% for cable in obj %}{% set _=result.append({'local_interface': cable['local_interface'], 'remote_interface': cable['remote_interface'], 'remote_device': cable['remote_device'] | remove_fqdn }) %}{% endfor %}{{ result | tojson }}" + iterable_type: "dict" diff --git a/nautobot_device_onboarding/constants.py b/nautobot_device_onboarding/constants.py index ef4d4f49..0f101f50 100644 --- a/nautobot_device_onboarding/constants.py +++ b/nautobot_device_onboarding/constants.py @@ -1,5 +1,11 @@ -"""Constants for nautobot_device_onboarding plugin.""" +"""Constants for nautobot_device_onboarding app.""" +from django.conf import settings +from nautobot.dcim.utils import get_all_network_driver_mappings + +PLUGIN_CFG = settings.PLUGINS_CONFIG["nautobot_device_onboarding"] + +# This mapping is only used for the original onboarding job. NETMIKO_TO_NAPALM_STATIC = { "cisco_ios": "ios", "cisco_xe": "ios", @@ -8,3 +14,31 @@ "juniper_junos": "junos", "cisco_xr": "iosxr", } + + +# This is used in the new SSoT based jobs. +SUPPORTED_NETWORK_DRIVERS = list(get_all_network_driver_mappings().keys()) + +# This is used in the new SSoT based jobs. Soon TPP, PYATS should be supported. +# SUPPORTED_COMMAND_PARSERS = ["textfsm", "ttp", "pyats"] +SUPPORTED_COMMAND_PARSERS = ["textfsm"] + +# This should potentially be removed and used nautobot core directly choices. +# from nautobot.dcim.choices import InterfaceTypeChoices +# InterfaceTypeChoices.as_dict() doesn't directly fit yet. Seems like maybe netutils needs the "human readible" nb choices. +INTERFACE_TYPE_MAP_STATIC = { + "Gigabit Ethernet": "1000base-t", + "Ten Gigabit Ethernet": "10gbase-t", + "Ethernet SVI": "virtual", + "EtherChannel": "lag", + "1000/10000 Ethernet": "1000base-t", + "100/1000/10000 Ethernet": "1000base-t", + "Port-channel": "lag", + "portChannel": "lag", + "port-channel": "lag", + "Port-Channel": "lag", + "GEChannel": "lag", + "EtherSVI": "virtual", + "FastEthernet": "100base-fx", + "ethernet": "1000base-t", +} diff --git a/nautobot_device_onboarding/datasources.py b/nautobot_device_onboarding/datasources.py new file mode 100755 index 00000000..2eda1278 --- /dev/null +++ b/nautobot_device_onboarding/datasources.py @@ -0,0 +1,25 @@ +"""Datasources to override command_mapper yaml files.""" + +from nautobot.apps.datasources import DatasourceContent +from nautobot.extras.choices import LogLevelChoices + + +def refresh_git_command_mappers(repository_record, job_result, delete=False): # pylint: disable=unused-argument + """Callback for gitrepository updates on Command Mapper Repo.""" + job_result.log( + "Successfully Pulled Command Mapper Repo", + level_choice=LogLevelChoices.LOG_DEBUG, + ) + + +datasource_contents = [ + ( + "extras.gitrepository", + DatasourceContent( + name="Network Sync Job Command Mappers", + content_identifier="nautobot_device_onboarding.onboarding_command_mappers", + icon="mdi-paw", + callback=refresh_git_command_mappers, + ), + ) +] diff --git a/nautobot_device_onboarding/diffsync/__init__.py b/nautobot_device_onboarding/diffsync/__init__.py new file mode 100644 index 00000000..74a66330 --- /dev/null +++ b/nautobot_device_onboarding/diffsync/__init__.py @@ -0,0 +1 @@ +"""Diffsync Definitions for SSoT Network Integration.""" diff --git a/nautobot_device_onboarding/diffsync/adapters/__init__.py b/nautobot_device_onboarding/diffsync/adapters/__init__.py new file mode 100644 index 00000000..125a53f3 --- /dev/null +++ b/nautobot_device_onboarding/diffsync/adapters/__init__.py @@ -0,0 +1 @@ +"""Adapter classes for loading DiffSyncModels with data from a Network or Nautobot.""" diff --git a/nautobot_device_onboarding/diffsync/adapters/sync_devices_adapters.py b/nautobot_device_onboarding/diffsync/adapters/sync_devices_adapters.py new file mode 100644 index 00000000..9662aee2 --- /dev/null +++ b/nautobot_device_onboarding/diffsync/adapters/sync_devices_adapters.py @@ -0,0 +1,398 @@ +"""DiffSync adapters.""" + +from collections import defaultdict +from typing import DefaultDict, Dict, FrozenSet, Hashable, Tuple, Type + +import diffsync +import netaddr +from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ValidationError +from django.db.models import Model +from nautobot.dcim.models import Device, DeviceType, Manufacturer, Platform + +from nautobot_device_onboarding.diffsync.models import sync_devices_models +from nautobot_device_onboarding.nornir_plays.command_getter import sync_devices_command_getter +from nautobot_device_onboarding.utils import diffsync_utils + +ParameterSet = FrozenSet[Tuple[str, Hashable]] + + +class SyncDevicesNautobotAdapter(diffsync.DiffSync): + """Adapter for loading Nautobot data.""" + + manufacturer = sync_devices_models.SyncDevicesManufacturer + platform = sync_devices_models.SyncDevicesPlatform + device = sync_devices_models.SyncDevicesDevice + device_type = sync_devices_models.SyncDevicesDeviceType + + top_level = ["manufacturer", "platform", "device_type", "device"] + + # This dictionary acts as an ORM cache. + _cache: DefaultDict[str, Dict[ParameterSet, Model]] + _cache_hits: DefaultDict[str, int] = defaultdict(int) + + def __init__(self, job, sync, *args, **kwargs): + """Initialize the SyncDevicesNautobotAdapter.""" + super().__init__(*args, **kwargs) + self.job = job + self.sync = sync + self.invalidate_cache() + + def invalidate_cache(self, zero_out_hits=True): + """Invalidates all the objects in the ORM cache.""" + self._cache = defaultdict(dict) + if zero_out_hits: + self._cache_hits = defaultdict(int) + + def get_from_orm_cache(self, parameters: Dict, model_class: Type[Model]): + """Retrieve an object from the ORM or the cache.""" + parameter_set = frozenset(parameters.items()) + content_type = ContentType.objects.get_for_model(model_class) + model_cache_key = f"{content_type.app_label}.{content_type.model}" + if cached_object := self._cache[model_cache_key].get(parameter_set): + self._cache_hits[model_cache_key] += 1 + return cached_object + # As we are using `get` here, this will error if there is not exactly one object that corresponds to the + # parameter set. We intentionally pass these errors through. + self._cache[model_cache_key][parameter_set] = model_class.objects.get(**dict(parameter_set)) + return self._cache[model_cache_key][parameter_set] + + def load_manufacturers(self): + """Load manufacturer data from Nautobot.""" + for manufacturer in Manufacturer.objects.all(): + if self.job.debug: + self.job.logger.debug("Loading Manufacturer data from Nautobot...") + onboarding_manufacturer = self.manufacturer(diffsync=self, pk=manufacturer.pk, name=manufacturer.name) + self.add(onboarding_manufacturer) + if self.job.debug: + self.job.logger.debug(f"Manufacturer: {manufacturer.name} loaded.") + + def load_platforms(self): + """Load platform data from Nautobot.""" + if self.job.debug: + self.job.logger.debug("Loading Platform data from Nautobot...") + for platform in Platform.objects.all(): + onboarding_platform = self.platform( + diffsync=self, + pk=platform.pk, + name=platform.name, + network_driver=platform.network_driver if platform.network_driver else "", + manufacturer__name=platform.manufacturer.name if platform.manufacturer else None, + ) + self.add(onboarding_platform) + if self.job.debug: + self.job.logger.debug(f"Platform: {platform.name} loaded.") + + def load_device_types(self): + """Load device type data from Nautobot.""" + if self.job.debug: + self.job.logger.debug("Loading DeviceType data from Nautobot...") + for device_type in DeviceType.objects.all(): + onboarding_device_type = self.device_type( + diffsync=self, + pk=device_type.pk, + model=device_type.model, + part_number=device_type.part_number, + manufacturer__name=device_type.manufacturer.name, + ) + self.add(onboarding_device_type) + if self.job.debug: + self.job.logger.debug(f"DeviceType: {device_type.model} loaded.") + + def load_devices(self): + """Load device data from Nautobot.""" + if self.job.debug: + self.job.logger.debug("Loading Device data from Nautobot...") + + for device in Device.objects.filter(primary_ip4__host__in=self.job.ip_addresses): + interface_list = [] + # Only interfaces with the device's primary ip should be considered for diff calculations + # Ultimately, only the first matching interface is used but this list could support multiple + # interface syncs in the future. + for interface in device.interfaces.all(): + if device.primary_ip4 in interface.ip_addresses.all(): + interface_list.append(interface.name) + if interface_list: + interface_list.sort() + interfaces = [interface_list[0]] + else: + interfaces = [] + onboarding_device = self.device( + diffsync=self, + pk=device.pk, + device_type__model=device.device_type.model, + location__name=device.location.name, + name=device.name, + platform__name=device.platform.name if device.platform else "", + primary_ip4__host=device.primary_ip4.host if device.primary_ip4 else "", + primary_ip4__status__name=device.primary_ip4.status.name if device.primary_ip4 else "", + role__name=device.role.name, + status__name=device.status.name, + secrets_group__name=device.secrets_group.name if device.secrets_group else "", + interfaces=interfaces, + mask_length=device.primary_ip4.mask_length if device.primary_ip4 else None, + serial=device.serial, + ) + self.add(onboarding_device) + if self.job.debug: + self.job.logger.debug(f"Device: {device.name} loaded.") + + def load(self): + """Load nautobot data.""" + self.load_manufacturers() + self.load_platforms() + self.load_device_types() + self.load_devices() + + +class SyncDevicesNetworkAdapter(diffsync.DiffSync): + """Adapter for loading device data from a network.""" + + manufacturer = sync_devices_models.SyncDevicesManufacturer + platform = sync_devices_models.SyncDevicesPlatform + device = sync_devices_models.SyncDevicesDevice + device_type = sync_devices_models.SyncDevicesDeviceType + + top_level = ["manufacturer", "platform", "device_type", "device"] + + def __init__(self, job, sync, *args, **kwargs): + """Initialize the SyncDevicesNetworkAdapter.""" + super().__init__(*args, **kwargs) + self.job = job + self.sync = sync + self.device_data = None + self.failed_ip_addresses = [] + + def _validate_ip_addresses(self, ip_addresses): + """Validate the format of each IP Address in a list of IP Addresses.""" + # Validate IP Addresses + validation_successful = True + for ip_address in ip_addresses: + try: + netaddr.IPAddress(ip_address) + except netaddr.AddrFormatError: + self.job.logger.error(f"[{ip_address}] is not a valid IP Address ") + validation_successful = False + if validation_successful: + return True + raise netaddr.AddrConversionError + + def _handle_failed_devices(self, device_data): + """ + Handle result data from failed devices. + + If a device fails to return expected data, log the result + and remove it from the data to be loaded into the diffsync store. + """ + self.device_data = None + self.failed_ip_addresses = [] + for ip_address in device_data: + if not device_data[ip_address]: + self.job.logger.error(f"{ip_address}: Connection or data error, this device will not be synced.") + self.failed_ip_addresses.append(ip_address) + for ip_address in self.failed_ip_addresses: + del device_data[ip_address] + self.device_data = device_data + + def execute_command_getter(self): + """Start the CommandGetterDO job to query devices for data.""" + if not self.job.processed_csv_data: + if self.job.platform: + if not self.job.platform.network_driver: + self.job.logger.error( + f"The selected platform, {self.job.platform} " + "does not have a network driver, please update the Platform." + ) + raise Exception("Platform.network_driver missing") # pylint: disable=broad-exception-raised + + result = sync_devices_command_getter( + self.job.job_result, self.job.logger.getEffectiveLevel(), self.job.job_result.task_kwargs + ) + if self.job.debug: + self.job.logger.debug(f"Command Getter Result: {result}") + data_type_check = diffsync_utils.check_data_type(result) + if self.job.debug: + self.job.logger.debug(f"CommandGetter data type check resut: {data_type_check}") + if data_type_check: + self._handle_failed_devices(device_data=result) + else: + self.job.logger.error( + "Data returned from CommandGetter is not the correct type. " + "No devices will be onboarded, check the CommandGetter job logs." + ) + raise ValidationError("Unexpected data returend from CommandGetter.") + + def _add_ip_address_to_failed_list(self, ip_address): + """If an a model fails to load, add the ip address to the failed list for logging.""" + if ip_address not in self.failed_ip_addresses: + self.failed_ip_addresses.append(ip_address) + + def load_manufacturers(self): + """Load manufacturers into the DiffSync store.""" + for ip_address in self.device_data: + if self.job.debug: + self.job.logger.debug(f"loading manufacturer data for {ip_address}") + onboarding_manufacturer = None + try: + onboarding_manufacturer = self.manufacturer( + diffsync=self, + name=self.device_data[ip_address]["manufacturer"], + ) + except KeyError as err: + self.job.logger.error( + f"{ip_address}: Unable to load Manufacturer due to a missing key in returned data, {err.args}" + ) + if onboarding_manufacturer: + try: + self.add(onboarding_manufacturer) + except diffsync.ObjectAlreadyExists: + pass + + def load_platforms(self): + """Load platforms into the DiffSync store.""" + for ip_address in self.device_data: + if self.job.debug: + self.job.logger.debug(f"loading platform data for {ip_address}") + onboarding_platform = None + try: + onboarding_platform = self.platform( + diffsync=self, + name=self.device_data[ip_address]["platform"], + manufacturer__name=self.device_data[ip_address]["manufacturer"], + network_driver=self.device_data[ip_address]["network_driver"], + ) + except KeyError as err: + self.job.logger.error( + f"{ip_address}: Unable to load Platform due to a missing key in returned data, {err.args}" + ) + if onboarding_platform: + try: + self.add(onboarding_platform) + except diffsync.ObjectAlreadyExists: + pass + + def load_device_types(self): + """Load device types into the DiffSync store.""" + for ip_address in self.device_data: + if self.job.debug: + self.job.logger.debug(f"loading device_type data for {ip_address}") + onboarding_device_type = None + try: + onboarding_device_type = self.device_type( + diffsync=self, + model=self.device_data[ip_address]["device_type"], + part_number=self.device_data[ip_address]["device_type"], + manufacturer__name=self.device_data[ip_address]["manufacturer"], + ) + except KeyError as err: + self.job.logger.error( + f"{ip_address}: Unable to load DeviceType due to a missing key in returned data, {err.args}" + ) + if onboarding_device_type: + try: + self.add(onboarding_device_type) + except diffsync.ObjectAlreadyExists: + pass + + def _fields_missing_data(self, device_data, ip_address, platform): + """Verify that all of the fields returned from a device actually contain data.""" + fields_missing_data = [] + required_fields_from_device = ["device_type", "hostname", "mgmt_interface", "mask_length", "serial"] + if platform: # platform is only returned with device data if not provided on the job form/csv + required_fields_from_device.append("platform") + for field in required_fields_from_device: + data = device_data[ip_address] + if not data.get(field): + fields_missing_data.append(field) + return fields_missing_data + + def load_devices(self): + """Load devices into the DiffSync store.""" + for ip_address in self.device_data: + if self.job.debug: + self.job.logger.debug(f"loading device data for {ip_address}") + platform = None # If an excption is caught below, the platform must still be set. + onboarding_device = None + try: + location = diffsync_utils.retrieve_submitted_value( + job=self.job, ip_address=ip_address, query_string="location" + ) + platform = diffsync_utils.retrieve_submitted_value( + job=self.job, ip_address=ip_address, query_string="platform" + ) + primary_ip4__status = diffsync_utils.retrieve_submitted_value( + job=self.job, ip_address=ip_address, query_string="ip_address_status" + ) + device_role = diffsync_utils.retrieve_submitted_value( + job=self.job, ip_address=ip_address, query_string="device_role" + ) + device_status = diffsync_utils.retrieve_submitted_value( + job=self.job, ip_address=ip_address, query_string="device_status" + ) + secrets_group = diffsync_utils.retrieve_submitted_value( + job=self.job, ip_address=ip_address, query_string="secrets_group" + ) + + onboarding_device = self.device( + diffsync=self, + device_type__model=self.device_data[ip_address]["device_type"], + location__name=location.name, + name=self.device_data[ip_address]["hostname"], + platform__name=platform.name if platform else self.device_data[ip_address]["platform"], + primary_ip4__host=ip_address, + primary_ip4__status__name=primary_ip4__status.name, + role__name=device_role.name, + status__name=device_status.name, + secrets_group__name=secrets_group.name, + interfaces=[self.device_data[ip_address]["mgmt_interface"]], + mask_length=int(self.device_data[ip_address]["mask_length"]), + serial=self.device_data[ip_address]["serial"], + ) + except KeyError as err: + self.job.logger.error( + f"{ip_address}: Unable to load Device due to a missing key in returned data, {err.args}, {err}" + ) + if ip_address not in self.failed_ip_addresses: + self.failed_ip_addresses.append(ip_address) + except ValueError as err: + self.job.logger.error( + f"{ip_address}: Unable to load Device due to invalid data type in data return, {err}" + ) + + fields_missing_data = self._fields_missing_data( + device_data=self.device_data, ip_address=ip_address, platform=platform + ) + if fields_missing_data: + onboarding_device = None + self.job.logger.error( + f"Unable to onbaord {ip_address}, returned data missing for {fields_missing_data}" + ) + else: + if onboarding_device: + try: + self.add(onboarding_device) + if self.job.debug: + self.job.logger.debug(f"Device: {self.device_data[ip_address]['hostname']} loaded.") + except diffsync.ObjectAlreadyExists: + self.job.logger.error( + f"Device: {self.device_data[ip_address]['hostname']} has already been loaded! " + f"Duplicate devices will not be synced. " + f"[Serial Number: {self.device_data[ip_address]['serial']}, " + f"IP Address: {ip_address}]" + ) + else: + self._add_ip_address_to_failed_list(ip_address=ip_address) + if self.job.debug: + self.job.logger.debug(f"{ip_address} was added to the failed ip_address list") + + def load(self): + """Load network data.""" + self._validate_ip_addresses(self.job.ip_addresses) + self.execute_command_getter() + self.load_manufacturers() + self.load_platforms() + self.load_device_types() + self.load_devices() + + if self.failed_ip_addresses: + self.job.logger.warning(f"Failed IP Addresses: {self.failed_ip_addresses}") diff --git a/nautobot_device_onboarding/diffsync/adapters/sync_network_data_adapters.py b/nautobot_device_onboarding/diffsync/adapters/sync_network_data_adapters.py new file mode 100644 index 00000000..3fd236a8 --- /dev/null +++ b/nautobot_device_onboarding/diffsync/adapters/sync_network_data_adapters.py @@ -0,0 +1,822 @@ +"""DiffSync adapters.""" + +import datetime + +import diffsync +from diffsync.enum import DiffSyncModelFlags +from django.conf import settings +from django.core.exceptions import ValidationError +from nautobot.dcim.models import Interface +from nautobot.ipam.models import VLAN, VRF, IPAddress +from nautobot_ssot.contrib import NautobotAdapter +from netaddr import EUI, mac_unix_expanded +from netutils.interface import canonical_interface_name + +from nautobot_device_onboarding.diffsync.models import sync_network_data_models +from nautobot_device_onboarding.nornir_plays.command_getter import sync_network_data_command_getter +from nautobot_device_onboarding.utils import diffsync_utils + +app_settings = settings.PLUGINS_CONFIG["nautobot_device_onboarding"] + + +class FilteredNautobotAdapter(NautobotAdapter): + """ + Allow Nautobot data to be filtered by the Job form inputs. + + Must be used with FilteredNautobotModel. + """ + + def _load_objects(self, diffsync_model): # pylint: disable=protected-access + """Given a diffsync model class, load a list of models from the database and return them.""" + parameter_names = self._get_parameter_names(diffsync_model) + for database_object in diffsync_model._get_queryset(diffsync=self): # pylint: disable=protected-access + self._load_single_object(database_object, diffsync_model, parameter_names) + + +class SyncNetworkDataNautobotAdapter(FilteredNautobotAdapter): + """Adapter for loading Nautobot data.""" + + device = sync_network_data_models.SyncNetworkDataDevice + interface = sync_network_data_models.SyncNetworkDataInterface + ip_address = sync_network_data_models.SyncNetworkDataIPAddress + ipaddress_to_interface = sync_network_data_models.SyncNetworkDataIPAddressToInterface + vlan = sync_network_data_models.SyncNetworkDataVLAN + vrf = sync_network_data_models.SyncNetworkDataVRF + tagged_vlans_to_interface = sync_network_data_models.SyncNetworkDataTaggedVlansToInterface + untagged_vlan_to_interface = sync_network_data_models.SyncNetworkDataUnTaggedVlanToInterface + lag_to_interface = sync_network_data_models.SyncNetworkDataLagToInterface + vrf_to_interface = sync_network_data_models.SyncNetworkDataVrfToInterface + cable = sync_network_data_models.SyncNetworkDataCable + + primary_ips = None + + top_level = [ + "ip_address", + "vlan", + "vrf", + "device", + "ipaddress_to_interface", + "untagged_vlan_to_interface", + "tagged_vlans_to_interface", + "lag_to_interface", + "vrf_to_interface", + "cable", + ] + + def _cache_primary_ips(self, device_queryset): + """ + Create a cache of primary ip address for devices. + + If the primary ip address of a device is unset due to the deletion + of an interface, this cache is used to reset it in sync_complete(). + """ + self.primary_ips = {} + for device in device_queryset: + self.primary_ips[device.id] = device.primary_ip.id + + def load_param_mac_address(self, parameter_name, database_object): + """Convert interface mac_address to string.""" + if database_object.mac_address: + return str(database_object.mac_address) + return "" + + def load_ip_addresses(self): + """Load IP addresses into the DiffSync store. + + Only IP Addresses that were returned by the CommandGetter job should be loaded. + """ + ip_address_hosts = set() + for _, device_data in self.job.command_getter_result.items(): + # for interface in device_data["interfaces"]: + for _, interface_data in device_data["interfaces"].items(): + for ip_address in interface_data["ip_addresses"]: + if ip_address: + ip_address_hosts.add(ip_address["ip_address"]) + if "" in ip_address_hosts: + ip_address_hosts.remove("") # do not attempt to filter ip addresses with empty strings + for ip_address in IPAddress.objects.filter( + host__in=ip_address_hosts, + parent__namespace__name=self.job.namespace.name, + ): + network_ip_address = self.ip_address( + diffsync=self, + host=ip_address.host, + mask_length=ip_address.mask_length, + type=ip_address.type, + ip_version=ip_address.ip_version, + status__name=ip_address.status.name, + ) + try: + network_ip_address.model_flags = DiffSyncModelFlags.SKIP_UNMATCHED_DST + self.add(network_ip_address) + except diffsync.exceptions.ObjectAlreadyExists: + self.job.logger.warning( + f"{network_ip_address} is already loaded to the DiffSync store. This is a duplicate IP Address." + ) + return ip_address_hosts + + def load_vlans(self): + """ + Load Vlans into the Diffsync store. + + Only Vlans that were returned by the CommandGetter job should be synced. + """ + for vlan in VLAN.objects.all(): + network_vlan = self.vlan( + diffsync=self, + name=vlan.name, + vid=vlan.vid, + location__name=vlan.location.name if vlan.location else "", + ) + try: + network_vlan.model_flags = DiffSyncModelFlags.SKIP_UNMATCHED_DST + self.add(network_vlan) + except diffsync.exceptions.ObjectAlreadyExists: + pass + + def load_tagged_vlans_to_interface(self): + """ + Load Tagged VLAN interface assignments into the Diffsync store. + + Only Vlan assignments that were returned by the CommandGetter job should be loaded. + """ + for interface in Interface.objects.filter(device__in=self.job.devices_to_load): + tagged_vlans = [] + for vlan in interface.tagged_vlans.all(): + vlan_dict = {} + vlan_dict["name"] = vlan.name + vlan_dict["id"] = str(vlan.vid) + tagged_vlans.append(vlan_dict) + + network_tagged_vlans_to_interface = self.tagged_vlans_to_interface( + diffsync=self, + device__name=interface.device.name, + name=interface.name, + tagged_vlans=tagged_vlans, + ) + network_tagged_vlans_to_interface.model_flags = DiffSyncModelFlags.SKIP_UNMATCHED_DST + self.add(network_tagged_vlans_to_interface) + + def load_untagged_vlan_to_interface(self): + """ + Load UnTagged VLAN interface assignments into the Diffsync store. + + Only UnTagged Vlan assignments that were returned by the CommandGetter job should be synced. + """ + for interface in Interface.objects.filter(device__in=self.job.devices_to_load): + untagged_vlan = {} + if interface.untagged_vlan: + untagged_vlan["name"] = interface.untagged_vlan.name + untagged_vlan["id"] = str(interface.untagged_vlan.vid) + + network_untagged_vlan_to_interface = self.untagged_vlan_to_interface( + diffsync=self, + device__name=interface.device.name, + name=interface.name, + untagged_vlan=untagged_vlan, + ) + network_untagged_vlan_to_interface.model_flags = DiffSyncModelFlags.SKIP_UNMATCHED_DST + self.add(network_untagged_vlan_to_interface) + + def load_lag_to_interface(self): + """ + Load Lag interface assignments into the Diffsync store. + + Only Lag assignments that were returned by the CommandGetter job should be synced. + """ + for interface in Interface.objects.filter(device__in=self.job.devices_to_load): + network_lag_to_interface = self.lag_to_interface( + diffsync=self, + device__name=interface.device.name, + name=interface.name, + lag__interface__name=interface.lag.name if interface.lag else "", + ) + network_lag_to_interface.model_flags = DiffSyncModelFlags.SKIP_UNMATCHED_DST + self.add(network_lag_to_interface) + + def load_vrfs(self): + """ + Load Vrfs into the Diffsync store. + + Only Vrfs that were returned by the CommandGetter job should be synced. + """ + for vrf in VRF.objects.all(): + network_vrf = self.vrf( + diffsync=self, + name=vrf.name, + namespace__name=vrf.namespace.name, + ) + try: + network_vrf.model_flags = DiffSyncModelFlags.SKIP_UNMATCHED_DST + self.add(network_vrf) + except diffsync.exceptions.ObjectAlreadyExists: + continue + + def load_vrf_to_interface(self): + """ + Load Vrf to interface assignments into the Diffsync store. + + Only Vrf assignments that were returned by the CommandGetter job should be synced. + """ + for interface in Interface.objects.filter(device__in=self.job.devices_to_load): + vrf = {} + if interface.vrf: + vrf["name"] = interface.vrf.name + + network_vrf_to_interface = self.vrf_to_interface( + diffsync=self, + device__name=interface.device.name, + name=interface.name, + vrf=vrf, + ) + network_vrf_to_interface.model_flags = DiffSyncModelFlags.SKIP_UNMATCHED_DST + self.add(network_vrf_to_interface) + + def load_cables(self): + """ + Load Cables into diffsync store. + + Only cables returned by the CommandGetter job should be synced. + """ + for device in self.job.devices_to_load: + for cable in device.get_cables(): + if cable.termination_b.device.name == "" or cable.termination_a.device.name == "": + self.job.logger.warning( + f"Device attached to a cable is missing a name. Devices must have a name to utilize cable onboarding. " + f"Skipping Cable: {cable}" + ) + continue + if cable.termination_a.device.name < cable.termination_b.device.name: + termination_a_device = cable.termination_a.device.name + termination_a_interface = cable.termination_a.name + termination_b_device = cable.termination_b.device.name + termination_b_interface = cable.termination_b.name + else: + termination_a_device = cable.termination_b.device.name + termination_a_interface = cable.termination_b.name + termination_b_device = cable.termination_a.device.name + termination_b_interface = cable.termination_a.name + + network_cable = self.cable( + diffsync=self, + status__name=cable.status.name, + termination_a__app_label="dcim", + termination_a__model="interface", + termination_a__device__name=termination_a_device, + termination_a__name=termination_a_interface, + termination_b__app_label="dcim", + termination_b__model="interface", + termination_b__device__name=termination_b_device, + termination_b__name=termination_b_interface, + ) + + try: + self.add(network_cable) + network_cable.pk = cable.pk + if self.job.debug: + self.job.logger.debug(f"Loaded Cable: {network_cable}") + except diffsync.exceptions.ObjectAlreadyExists: + continue + + def load(self): + """Generic implementation of the load function.""" + if not hasattr(self, "top_level") or not self.top_level: + raise ValueError("'top_level' needs to be set on the class.") + + self._cache_primary_ips(device_queryset=self.job.devices_to_load) + for model_name in self.top_level: + if model_name == "ip_address": + self.load_ip_addresses() + elif model_name == "vlan": + if self.job.sync_vlans: + self.load_vlans() + elif model_name == "vrf": + if self.job.sync_vrfs: + self.load_vrfs() + elif model_name == "tagged_vlans_to_interface": + if self.job.sync_vlans: + self.load_tagged_vlans_to_interface() + elif model_name == "untagged_vlan_to_interface": + if self.job.sync_vlans: + self.load_untagged_vlan_to_interface() + elif model_name == "lag_to_interface": + self.load_lag_to_interface() + elif model_name == "vrf_to_interface": + if self.job.sync_vrfs: + self.load_vrf_to_interface() + elif model_name == "cable": + if self.job.sync_cables: + self.load_cables() + else: + diffsync_model = self._get_diffsync_class(model_name) + self._load_objects(diffsync_model) + + def sync_complete(self, source, diff, *args, **kwargs): + """ + Assign the primary ip address to a device and update the management interface setting. + + Syncing interfaces may result in the deletion of the original management interface. If + this happens, the primary IP Address for the device should be set and the management only + option on the appropriate interface should be set to True. + + This method only runs if data was changed. + """ + if self.job.debug: + self.job.logger.debug("Sync Complete method called, checking for missing primary ip addresses...") + for device in self.job.devices_to_load.all(): # refresh queryset after sync is complete + if not device.primary_ip: + ip_address = "" + try: + ip_address = IPAddress.objects.get(id=self.primary_ips[device.id]) + device.primary_ip4 = ip_address + device.validated_save() + self.job.logger.info(f"Assigning {ip_address} as primary IP Address for Device: {device.name}") + except Exception as err: # pylint: disable=broad-exception-caught + self.job.logger.error( + f"Unable to set Primary IP for {device.name}, {err.args}. " + "Please check the primary IP Address assignment for this device." + ) + if ip_address: + try: + interface = Interface.objects.get(device=device, ip_addresses__in=[ip_address]) + interface.mgmt_only = True + interface.validated_save() + self.job.logger.info( + f"Management only set for interface: {interface.name} on device: {device.name}" + ) + except Exception as err: # pylint: disable=broad-exception-caught + self.job.logger.error( + "Failed to set management only on the " + f"management interface for {device.name}, {err}, {err.args}" + ) + else: + self.job.logger.error( + f"Failed to set management only on the managmeent interface for {device.name}" + ) + return super().sync_complete(source, diff, *args, **kwargs) + + +class MacUnixExpandedUppercase(mac_unix_expanded): + """Mac Unix Expanded Uppercase.""" + + word_fmt = "%.2X" + + +class SyncNetworkDataNetworkAdapter(diffsync.DiffSync): + """Adapter for loading Network data.""" + + def __init__(self, *args, job, sync=None, **kwargs): + """Instantiate this class, but do not load data immediately from the local system.""" + super().__init__(*args, **kwargs) + self.job = job + self.sync = sync + + device = sync_network_data_models.SyncNetworkDataDevice + interface = sync_network_data_models.SyncNetworkDataInterface + ip_address = sync_network_data_models.SyncNetworkDataIPAddress + ipaddress_to_interface = sync_network_data_models.SyncNetworkDataIPAddressToInterface + vlan = sync_network_data_models.SyncNetworkDataVLAN + vrf = sync_network_data_models.SyncNetworkDataVRF + tagged_vlans_to_interface = sync_network_data_models.SyncNetworkDataTaggedVlansToInterface + untagged_vlan_to_interface = sync_network_data_models.SyncNetworkDataUnTaggedVlanToInterface + lag_to_interface = sync_network_data_models.SyncNetworkDataLagToInterface + vrf_to_interface = sync_network_data_models.SyncNetworkDataVrfToInterface + cable = sync_network_data_models.SyncNetworkDataCable + + top_level = [ + "ip_address", + "vlan", + "vrf", + "device", + "ipaddress_to_interface", + "untagged_vlan_to_interface", + "tagged_vlans_to_interface", + "lag_to_interface", + "vrf_to_interface", + "cable", + ] + + def _handle_failed_devices(self, device_data): + """ + Handle result data from failed devices. + + If a device fails to return expected data, log the result + and remove it from the data to be loaded into the diffsync store. + """ + failed_devices = [] + + for hostname in device_data: + if device_data[hostname].get("failed"): + self.job.logger.error( + f"{hostname}: Connection or data error, this device will not be synced. " + f"{device_data[hostname].get('failed_reason')}" + ) + failed_devices.append(hostname) + # remove devices that failed from the command getter results + for hostname in failed_devices: + del device_data[hostname] + + device_queryset, devices_with_errors = diffsync_utils.generate_device_queryset_from_command_getter_result( + job=self.job, command_getter_result=device_data + ) + + # remove devices that have errors found while creating the queryset from the command getter results + for hostname in devices_with_errors: + del device_data[hostname] + + failed_devices = failed_devices + devices_with_errors + if failed_devices: + self.job.logger.warning(f"Failed devices: {failed_devices}") + + self.job.command_getter_result = device_data + self.job.devices_to_load = device_queryset + + def _handle_general_load_exception(self, error, hostname, data, model_type): + """If a diffsync model fails to load, log the error.""" + self.job.logger.error(f"Failed to load {model_type} model for {hostname}. {error}, {error.args}") + if self.job.debug: + self.job.logger.debug(f"HOSTNAME: {hostname}, DATA: {data}") + + def execute_command_getter(self): + """Query devices for data.""" + result = sync_network_data_command_getter( + self.job.job_result, self.job.logger.getEffectiveLevel(), self.job.job_result.task_kwargs + ) + # verify data returned is a dict + data_type_check = diffsync_utils.check_data_type(result) + if self.job.debug: + self.job.logger.debug(f"CommandGetter data type check result: {data_type_check}") + if data_type_check: + self._handle_failed_devices(device_data=result) + else: + self.job.logger.error( + "Data returned from CommandGetter is not the correct type. No devices will be onboarded" + ) + raise ValidationError("Unexpected data returned from CommandGetter.") + + def _process_mac_address(self, mac_address): + """Convert a mac address to match the value stored by Nautobot.""" + if mac_address: + return str(EUI(mac_address, version=48, dialect=MacUnixExpandedUppercase)) + return "" + + def load_devices(self): + """Load devices into the DiffSync store.""" + for hostname, device_data in self.job.command_getter_result.items(): + try: + network_device = self.device( + diffsync=self, + name=hostname, + serial=device_data["serial"], + last_network_data_sync=datetime.datetime.now().date().isoformat(), + ) + self.add(network_device) + except Exception as err: # pylint: disable=broad-exception-caught + self._handle_general_load_exception(error=err, hostname=hostname, data=device_data, model_type="device") + continue + # for interface in device_data["interfaces"]: + for interface_name, interface_data in device_data["interfaces"].items(): + network_interface = self.load_interface(hostname, interface_name, interface_data) + network_device.add_child(network_interface) + + # def _get_vlan_name(self, interface_data): + # """Given interface data returned from a device, process and return the vlan name.""" + # vlan_name = "" + # if self.job.sync_vlans: + # vlan_name = interface_data["untagged_vlan"]["name"] if interface_data["untagged_vlan"] else "" + # return vlan_name + + def load_interface(self, hostname, interface_name, interface_data): + """Load an interface into the DiffSync store.""" + network_interface = self.interface( + diffsync=self, + name=interface_name, + device__name=hostname, + status__name=self.job.interface_status.name, + type=interface_data["type"], + mac_address=self._process_mac_address(mac_address=interface_data["mac_address"]), + mtu=interface_data["mtu"] if interface_data["mtu"] else 1500, + description=interface_data["description"], + enabled=interface_data["link_status"], + mode=interface_data["802.1Q_mode"], + # untagged_vlan__name=self._get_vlan_name(interface_data=interface_data), + ) + self.add(network_interface) + return network_interface + + def load_ip_addresses(self): + """Load IP addresses into the DiffSync store.""" + for hostname, device_data in self.job.command_getter_result.items(): # pylint: disable=too-many-nested-blocks + if self.job.debug: + self.job.logger.debug(f"Loading IP Addresses from {hostname}") + # for interface in device_data["interfaces"]: + for interface_name, interface_data in device_data["interfaces"].items(): + if interface_data["ip_addresses"]: + for ip_address in interface_data["ip_addresses"]: + if ip_address["ip_address"]: # the ip_address and mask_length may be empty, skip these + if self.job.debug: + self.job.logger.debug(f"Loading {ip_address} from {interface_name} on {hostname}") + try: + network_ip_address = self.ip_address( + diffsync=self, + host=ip_address["ip_address"], + mask_length=int(ip_address["prefix_length"]), + type="host", + ip_version=4, + status__name=self.job.ip_address_status.name, + ) + self.add(network_ip_address) + except diffsync.exceptions.ObjectAlreadyExists: + self.job.logger.warning( + f"{network_ip_address} is already loaded to the " + "DiffSync store. This is a duplicate IP Address." + ) + continue + except Exception as err: # pylint: disable=broad-exception-caught + self._handle_general_load_exception( + error=err, hostname=hostname, data=device_data, model_type="ip_address" + ) + continue + + def load_vlans(self): + """Load vlans into the Diffsync store.""" + location_names = {} + for device in self.job.devices_to_load: + location_names[device.name] = device.location.name + + for hostname, device_data in self.job.command_getter_result.items(): # pylint: disable=too-many-nested-blocks + if self.job.debug: + self.job.logger.debug(f"Loading Vlans from {hostname}") + # for interface in device_data["interfaces"]: + for _, interface_data in device_data["interfaces"].items(): + # add tagged vlans + for tagged_vlan in interface_data["tagged_vlans"]: + try: + network_vlan = self.vlan( + diffsync=self, + name=tagged_vlan["name"], + vid=tagged_vlan["id"], + location__name=location_names.get(hostname, ""), + ) + self.add(network_vlan) + except diffsync.exceptions.ObjectAlreadyExists: + continue + except Exception as err: # pylint: disable=broad-exception-caught + self._handle_general_load_exception( + error=err, hostname=hostname, data=device_data, model_type="vlan" + ) + continue + # check for untagged vlan and add if necessary + if interface_data["untagged_vlan"]: + try: + network_vlan = self.vlan( + diffsync=self, + name=interface_data["untagged_vlan"]["name"], + vid=interface_data["untagged_vlan"]["id"], + location__name=location_names.get(hostname, ""), + ) + self.add(network_vlan) + except diffsync.exceptions.ObjectAlreadyExists: + continue + except Exception as err: # pylint: disable=broad-exception-caught + self._handle_general_load_exception( + error=err, hostname=hostname, data=device_data, model_type="vlan" + ) + continue + + def load_vrfs(self): + """Load vrfs into the Diffsync store.""" + for hostname, device_data in self.job.command_getter_result.items(): # pylint: disable=too-many-nested-blocks + if self.job.debug: + self.job.logger.debug(f"Loading Vrfs from {hostname}") + # for interface in device_data["interfaces"]: + for _, interface_data in device_data["interfaces"].items(): + if interface_data["vrf"]: + try: + network_vrf = self.vrf( + diffsync=self, + name=interface_data["vrf"]["name"], + namespace__name=self.job.namespace.name, + ) + self.add(network_vrf) + except diffsync.exceptions.ObjectAlreadyExists: + continue + except Exception as err: # pylint: disable=broad-exception-caught + self._handle_general_load_exception( + error=err, hostname=hostname, data=device_data, model_type="vrf" + ) + continue + + def load_ip_address_to_interfaces(self): + """Load ip address interface assignments into the Diffsync store.""" + for hostname, device_data in self.job.command_getter_result.items(): # pylint: disable=too-many-nested-blocks + for interface_name, interface_data in device_data["interfaces"].items(): + for ip_address in interface_data["ip_addresses"]: + if ip_address["ip_address"]: # the ip_address and mask_length may be empty, skip these + try: + network_ip_address_to_interface = self.ipaddress_to_interface( + diffsync=self, + interface__device__name=hostname, + interface__name=interface_name, + ip_address__host=ip_address["ip_address"], + ip_address__mask_length=( + int(ip_address["prefix_length"]) if ip_address["prefix_length"] else None + ), + ) + self.add(network_ip_address_to_interface) + except Exception as err: # pylint: disable=broad-exception-caught + self._handle_general_load_exception( + error=err, hostname=hostname, data=device_data, model_type="ip_address to interface" + ) + continue + + def load_tagged_vlans_to_interface(self): + """Load tagged vlan to interface assignments into the Diffsync store.""" + for hostname, device_data in self.job.command_getter_result.items(): + # for interface in device_data["interfaces"]: + for interface_name, interface_data in device_data["interfaces"].items(): + try: + network_tagged_vlans_to_interface = self.tagged_vlans_to_interface( + diffsync=self, + device__name=hostname, + name=interface_name, + tagged_vlans=interface_data["tagged_vlans"], + ) + self.add(network_tagged_vlans_to_interface) + except Exception as err: # pylint: disable=broad-exception-caught + self._handle_general_load_exception( + error=err, hostname=hostname, data=device_data, model_type="tagged vlan to interface" + ) + continue + + def load_untagged_vlan_to_interface(self): + """Load untagged vlan to interface assignments into the Diffsync store.""" + for hostname, device_data in self.job.command_getter_result.items(): + # for interface in device_data["interfaces"]: + for interface_name, interface_data in device_data["interfaces"].items(): + try: + network_untagged_vlan_to_interface = self.untagged_vlan_to_interface( + diffsync=self, + device__name=hostname, + name=interface_name, + untagged_vlan=interface_data["untagged_vlan"], + ) + self.add(network_untagged_vlan_to_interface) + except Exception as err: # pylint: disable=broad-exception-caught + self._handle_general_load_exception( + error=err, hostname=hostname, data=device_data, model_type="untagged vlan to interface" + ) + continue + + def load_lag_to_interface(self): + """Load lag interface assignments into the Diffsync store.""" + for hostname, device_data in self.job.command_getter_result.items(): + # for interface in device_data["interfaces"]: + for interface_name, interface_data in device_data["interfaces"].items(): + try: + network_lag_to_interface = self.lag_to_interface( + diffsync=self, + device__name=hostname, + name=interface_name, + lag__interface__name=interface_data["lag"] if interface_data["lag"] else "", + ) + self.add(network_lag_to_interface) + except Exception as err: # pylint: disable=broad-exception-caught + self._handle_general_load_exception( + error=err, hostname=hostname, data=device_data, model_type="lag to interface" + ) + continue + + def load_vrf_to_interface(self): + """Load Vrf to interface assignments into the Diffsync store.""" + for hostname, device_data in self.job.command_getter_result.items(): + # for interface in device_data["interfaces"]: + for interface_name, interface_data in device_data["interfaces"].items(): + try: + network_vrf_to_interface = self.vrf_to_interface( + diffsync=self, + device__name=hostname, + name=interface_name, + vrf=interface_data["vrf"], + ) + self.add(network_vrf_to_interface) + except Exception as err: # pylint: disable=broad-exception-caught + self._handle_general_load_exception( + error=err, hostname=hostname, data=device_data, model_type="vrf to interface" + ) + continue + + def load_cables(self): # pylint: disable=inconsistent-return-statements + """Load cables into the Diffsync store.""" + for hostname, device_data in self.job.command_getter_result.items(): + if "cables" not in device_data: + self.job.logger.warning(f"No cable data found for {hostname}. Skipping cable load.") + return + if self.job.debug: + self.job.logger.debug(f"Loading Cables from {hostname}") + self.job.logger.debug(f"Cable Data: {device_data['cables']}") + + # last case check to make sure cable data is returned and returned in the correct format (list of dict) + + try: + for neighbor_data in device_data["cables"]: + try: + local_interface = canonical_interface_name(neighbor_data["local_interface"]) + except KeyError as error: + error.args = error.args + "Local interface is missing a name." + self._handle_general_load_exception( + error=error, + hostname=hostname, + data=neighbor_data, + model_type="cable", + ) + continue + + try: + remote_interface = canonical_interface_name(neighbor_data["remote_interface"]) + except KeyError as error: + error.args = error.args + "Remote interface is missing a name." + self._handle_general_load_exception( + error=error, + hostname=hostname, + data=neighbor_data, + model_type="cable", + ) + continue + + try: + remote_device = neighbor_data["remote_device"] + except KeyError as error: + error.args = error.args + "Remote device is missing a name." + self._handle_general_load_exception( + error=error, + hostname=hostname, + data=neighbor_data, + model_type="cable", + ) + continue + + if self.job.debug: + self.job.logger.debug(f"Neighbor Data: {neighbor_data}") + + # always put the alphabetically first device as termination a + if hostname < remote_device: + termination_a_device = hostname + termination_a_interface = local_interface + termination_b_device = remote_device + termination_b_interface = remote_interface + else: + termination_a_device = remote_device + termination_a_interface = remote_interface + termination_b_device = hostname + termination_b_interface = local_interface + + network_cable = self.cable( + diffsync=self, + status__name="Connected", # ask for default status in the job form + termination_a__app_label="dcim", + termination_a__model="interface", + termination_a__device__name=termination_a_device, + termination_a__name=termination_a_interface, + termination_b__app_label="dcim", + termination_b__model="interface", + termination_b__device__name=termination_b_device, + termination_b__name=termination_b_interface, + ) + try: + self.add(network_cable) + if self.job.debug: + self.job.logger.debug(f"Loaded Cable: {network_cable}") + except diffsync.exceptions.ObjectAlreadyExists: + # object already in the diffsync store. + pass + except KeyError as error: + error.args = ( + error.args + + "Cable data/cable key is missing from the returned device data or returned data is not a list." + ) + self._handle_general_load_exception( + error=error, + hostname=hostname, + data=device_data, + model_type="cable", + ) + + def load(self): + """Load network data.""" + self.execute_command_getter() + self.load_ip_addresses() + if self.job.sync_vlans: + self.load_vlans() + if self.job.sync_vrfs: + self.load_vrfs() + self.load_devices() + self.load_ip_address_to_interfaces() + if self.job.sync_vlans: + self.load_tagged_vlans_to_interface() + self.load_untagged_vlan_to_interface() + self.load_lag_to_interface() + if self.job.sync_vrfs: + self.load_vrf_to_interface() + if self.job.sync_cables: + self.load_cables() diff --git a/nautobot_device_onboarding/diffsync/models/sync_devices_models.py b/nautobot_device_onboarding/diffsync/models/sync_devices_models.py new file mode 100644 index 00000000..96015e64 --- /dev/null +++ b/nautobot_device_onboarding/diffsync/models/sync_devices_models.py @@ -0,0 +1,387 @@ +"""Diffsync models.""" + +from typing import Optional + +from diffsync import DiffSyncModel +from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist, ValidationError +from nautobot.apps.choices import InterfaceTypeChoices +from nautobot.dcim.models import Device, DeviceType, Interface, Manufacturer, Platform +from nautobot.extras.models import Role, SecretsGroup, Status +from nautobot.ipam.models import IPAddressToInterface +from nautobot_ssot.contrib import NautobotModel + +from nautobot_device_onboarding.utils import diffsync_utils + + +class SyncDevicesDevice(DiffSyncModel): + """Diffsync model for device data.""" + + _modelname = "device" + _identifiers = ( + "location__name", + "name", + "serial", + ) + _attributes = ( + "device_type__model", + "mask_length", + "primary_ip4__host", + "primary_ip4__status__name", + "platform__name", + "role__name", + "secrets_group__name", + "status__name", + "interfaces", + ) + + name: str + location__name: str + serial: str + + device_type__model: Optional[str] + mask_length: Optional[int] + primary_ip4__host: Optional[str] + primary_ip4__status__name: Optional[str] + platform__name: Optional[str] + role__name: Optional[str] + secrets_group__name: Optional[str] + status__name: Optional[str] + + interfaces: Optional[list] + + @classmethod + def _get_or_create_device(cls, diffsync, ids, attrs): + """Attempt to get a Device, create a new one if necessary.""" + device = None + try: + # Only Devices with a primary ip address are loaded from Nautobot when syncing. + # If a device is found in Nautobot with a matching name and location as the + # device being created, but the primary ip address doesn't match an ip address entered, + # (or doesn't exist) the matching device will be updated or skipped based on user preference. + + location = diffsync_utils.retrieve_submitted_value( + job=diffsync.job, ip_address=attrs["primary_ip4__host"], query_string="location" + ) + platform = Platform.objects.get(name=attrs["platform__name"]) + device = Device.objects.get(name=ids["name"], location=location) + update_devices_without_primary_ip = diffsync_utils.retrieve_submitted_value( + job=diffsync.job, + ip_address=attrs["primary_ip4__host"], + query_string="update_devices_without_primary_ip", + ) + if update_devices_without_primary_ip: + diffsync.job.logger.warning( + f"Device {device.name} at location {location.name} already exists in Nautobot " + "but the primary ip address either does not exist, or doesn't match an entered ip address. " + "This device will be updated. This update may result in multiple IP Address assignments " + "to an interface on the device." + ) + device = cls._update_device_with_attrs(device, platform, ids, attrs, diffsync) + else: + diffsync.job.logger.warning( + f"Device {device.name} at location {location.name} already exists in Nautobot " + "but the primary ip address either does not exist, or doesn't match an entered ip address. " + "IP Address, this device will be skipped." + ) + return None + + except ObjectDoesNotExist: + # Create Device + device = Device( + location=location, + status=diffsync_utils.retrieve_submitted_value( + job=diffsync.job, ip_address=attrs["primary_ip4__host"], query_string="device_status" + ), + role=diffsync_utils.retrieve_submitted_value( + job=diffsync.job, ip_address=attrs["primary_ip4__host"], query_string="device_role" + ), + device_type=DeviceType.objects.get(model=attrs["device_type__model"]), + name=ids["name"], + platform=platform, + secrets_group=diffsync_utils.retrieve_submitted_value( + job=diffsync.job, ip_address=attrs["primary_ip4__host"], query_string="secrets_group" + ), + serial=ids["serial"], + ) + device.validated_save() + return device + + @classmethod + def _get_or_create_interface(cls, diffsync, device, ip_address, interface_name): + """Attempt to get a Device Interface, create a new one if necessary.""" + device_interface = None + try: + device_interface = Interface.objects.get( + name=interface_name, + device=device, + ) + except ObjectDoesNotExist: + try: + device_interface = Interface( + name=interface_name, + mgmt_only=diffsync_utils.retrieve_submitted_value( + job=diffsync.job, ip_address=ip_address, query_string="set_mgmt_only" + ), + status=diffsync_utils.retrieve_submitted_value( + job=diffsync.job, ip_address=ip_address, query_string="interface_status" + ), + type=InterfaceTypeChoices.TYPE_OTHER, + device=device, + ) + device_interface.validated_save() + except Exception as err: + diffsync.job.logger.error(f"Device Interface could not be created, {err}") + return device_interface + + @classmethod + def _get_or_create_ip_address_to_interface(cls, diffsync, interface, ip_address): + """Attempt to get a Device Interface, create a new one if necessary.""" + interface_assignment = None + try: + interface_assignment = IPAddressToInterface.objects.get( + ip_address=ip_address, + interface=interface, + ) + except ObjectDoesNotExist: + try: + interface_assignment = IPAddressToInterface( + ip_address=ip_address, + interface=interface, + ) + interface_assignment.validated_save() + except Exception as err: + diffsync.job.logger.error(f"{ip_address} failed to assign to assign to interface {err}") + return interface_assignment + + @classmethod + def _update_device_with_attrs(cls, device, platform, ids, attrs, diffsync): + """Update a Nautobot device instance with attrs.""" + device.location = diffsync_utils.retrieve_submitted_value( + job=diffsync.job, + ip_address=attrs["primary_ip4__host"], + query_string="location", + ) + device.status = diffsync_utils.retrieve_submitted_value( + job=diffsync.job, + ip_address=attrs["primary_ip4__host"], + query_string="device_status", + ) + device.role = diffsync_utils.retrieve_submitted_value( + job=diffsync.job, + ip_address=attrs["primary_ip4__host"], + query_string="device_role", + ) + device.device_type = DeviceType.objects.get(model=attrs["device_type__model"]) + device.platform = platform + device.secrets_group = diffsync_utils.retrieve_submitted_value( + job=diffsync.job, + ip_address=attrs["primary_ip4__host"], + query_string="secrets_group", + ) + device.serial = ids["serial"] + + return device + + def _remove_old_interface_assignment(self, device, ip_address): + """Remove a device's primary IP address from an interface.""" + try: + old_interface = Interface.objects.get( + device=device, + ip_addresses__in=[ip_address], + ) + old_interface_assignment = IPAddressToInterface.objects.get( + interface=old_interface, + ip_address=ip_address, + ) + old_interface_assignment.delete() + if self.diffsync.job.debug: + self.diffsync.job.logger.debug(f"Interface assignment deleted: {old_interface_assignment}") + except MultipleObjectsReturned: + self.diffsync.job.logger.warning( + f"{ip_address} is assigned to multiple interfaces. The primary IP Address for this " + "device will be assigned to an interface but duplicate assignments will remain." + ) + except ObjectDoesNotExist: + pass + + @classmethod + def create(cls, diffsync, ids, attrs): + """Create a new nautobot device using data scraped from a device.""" + if diffsync.job.debug: + diffsync.job.logger.debug(f"Creating device {ids} with {attrs}") + + # Get or create Device, Interface and IP Address + device = cls._get_or_create_device(diffsync, ids, attrs) + if device: + ip_address = diffsync_utils.get_or_create_ip_address( + host=attrs["primary_ip4__host"], + mask_length=attrs["mask_length"], + namespace=diffsync_utils.retrieve_submitted_value( + job=diffsync.job, ip_address=attrs["primary_ip4__host"], query_string="namespace" + ), + default_ip_status=diffsync_utils.retrieve_submitted_value( + job=diffsync.job, ip_address=attrs["primary_ip4__host"], query_string="ip_address_status" + ), + default_prefix_status=diffsync_utils.retrieve_submitted_value( + job=diffsync.job, ip_address=attrs["primary_ip4__host"], query_string="ip_address_status" + ), + job=diffsync.job, + ) + interface = cls._get_or_create_interface( + diffsync=diffsync, + device=device, + ip_address=attrs["primary_ip4__host"], + interface_name=attrs["interfaces"][0], + ) + cls._get_or_create_ip_address_to_interface(diffsync=diffsync, ip_address=ip_address, interface=interface) + # Assign primary IP Address to Device + device.primary_ip4 = ip_address + + try: + device.validated_save() + except ValidationError as err: + diffsync.job.logger.error(f"Failed to create or update Device: {ids['name']}, {err}") + raise ValidationError(err) + else: + diffsync.job.logger.error(f"Failed create or update Device: {ids['name']}") + + return super().create(diffsync=diffsync, ids=ids, attrs=attrs) + + def update(self, attrs): + """Update an existing nautobot device using data scraped from a device.""" + device = Device.objects.get(name=self.name, location__name=self.location__name) + + if self.diffsync.job.debug: + self.diffsync.job.logger.debug(f"Updating {device.name} with attrs: {attrs}") + if attrs.get("device_type__model"): + device.device_type = DeviceType.objects.get(model=attrs.get("device_type__model")) + if attrs.get("platform__name"): + device.platform = Platform.objects.get(name=attrs.get("platform__name")) + if attrs.get("role__name"): + device.role = Role.objects.get(name=attrs.get("role__name")) + if attrs.get("status__name"): + device.status = Status.objects.get(name=attrs.get("status__name")) + if attrs.get("secrets_group__name"): + device.secrets_group = SecretsGroup.objects.get(name=attrs.get("secrets_group__name")) + + if attrs.get("interfaces"): + # Update both the interface and primary ip address + if attrs.get("primary_ip4__host"): + # If the primary ip address is being updated, the mask length must be included + if not attrs.get("mask_length"): + attrs["mask_length"] = device.primary_ip4.mask_length + + ip_address = diffsync_utils.get_or_create_ip_address( + host=attrs["primary_ip4__host"], + mask_length=attrs["mask_length"], + namespace=diffsync_utils.retrieve_submitted_value( + job=self.diffsync.job, ip_address=attrs["primary_ip4__host"], query_string="namespace" + ), + default_ip_status=diffsync_utils.retrieve_submitted_value( + job=self.diffsync.job, ip_address=attrs["primary_ip4__host"], query_string="ip_address_status" + ), + default_prefix_status=diffsync_utils.retrieve_submitted_value( + job=self.diffsync.job, ip_address=attrs["primary_ip4__host"], query_string="ip_address_status" + ), + job=self.diffsync.job, + ) + new_interface = self._get_or_create_interface( + diffsync=self.diffsync, + device=device, + ip_address=attrs["primary_ip4__host"], + interface_name=attrs["interfaces"][0], + ) + self._get_or_create_ip_address_to_interface( + diffsync=self.diffsync, ip_address=ip_address, interface=new_interface + ) + device.primary_ip4 = ip_address + # Update the interface only + else: + # Remove the primary IP Address from the old managment interface + self._remove_old_interface_assignment(device=device, ip_address=device.primary_ip4) + + new_interface = self._get_or_create_interface( + diffsync=self.diffsync, + device=device, + ip_address=self.primary_ip4__host, + interface_name=attrs["interfaces"][0], + ) + self._get_or_create_ip_address_to_interface( + diffsync=self.diffsync, ip_address=device.primary_ip4, interface=new_interface + ) + else: + # Update the primary ip address only + # This edge case is unlikely to occur. A device with primary_ip that doesn't mach what was entered + # on the job form should be filtered out of the sync and later caught by _get_or_create_device() + if attrs.get("primary_ip4__host"): + if not attrs.get("mask_length"): + attrs["mask_length"] = device.primary_ip4.mask_length + + new_ip_address = diffsync_utils.get_or_create_ip_address( + host=attrs["primary_ip4__host"], + mask_length=attrs["mask_length"], + namespace=diffsync_utils.retrieve_submitted_value( + job=self.diffsync.job, ip_address=attrs["primary_ip4__host"], query_string="namespace" + ), + default_ip_status=diffsync_utils.retrieve_submitted_value( + job=self.diffsync.job, ip_address=attrs["primary_ip4__host"], query_string="ip_address_status" + ), + default_prefix_status=diffsync_utils.retrieve_submitted_value( + job=self.diffsync.job, ip_address=attrs["primary_ip4__host"], query_string="ip_address_status" + ), + job=self.diffsync.job, + ) + self._remove_old_interface_assignment(device=device, ip_address=device.primary_ip4) + existing_interface = self._get_or_create_interface( + diffsync=self.diffsync, + device=device, + ip_address=new_ip_address, + interface_name=self.get_attrs()["interfaces"][0], + ) + self._get_or_create_ip_address_to_interface( + diffsync=self.diffsync, ip_address=new_ip_address, interface=existing_interface + ) + device.primary_ip4 = new_ip_address + try: + device.validated_save() + except ValidationError as err: + self.diffsync.job.logger.error(f"Device {device.name} failed to update, {err}") + return super().update(attrs) + + +class SyncDevicesDeviceType(NautobotModel): + """Diffsync model for device type data.""" + + _modelname = "device_type" + _model = DeviceType + _identifiers = ("model", "manufacturer__name") + _attributes = ("part_number",) + + model: str + manufacturer__name: str + + part_number: str + + +class SyncDevicesManufacturer(NautobotModel): + """Diffsync model for manufacturer data.""" + + _modelname = "manufacturer" + _model = Manufacturer + _identifiers = ("name",) + + name: str + + +class SyncDevicesPlatform(NautobotModel): + """Diffsync model for platform data.""" + + _modelname = "platform" + _model = Platform + _identifiers = ("name",) + _attributes = ("network_driver", "manufacturer__name") + + name: str + + network_driver: Optional[str] + manufacturer__name: Optional[str] diff --git a/nautobot_device_onboarding/diffsync/models/sync_network_data_models.py b/nautobot_device_onboarding/diffsync/models/sync_network_data_models.py new file mode 100644 index 00000000..4a9948a8 --- /dev/null +++ b/nautobot_device_onboarding/diffsync/models/sync_network_data_models.py @@ -0,0 +1,592 @@ +"""Diffsync models.""" + +from typing import List, Optional + +try: + from typing import Annotated # Python>=3.9 +except ImportError: + from typing_extensions import Annotated # Python<3.9 + +from diffsync import DiffSync, DiffSyncModel +from diffsync import exceptions as diffsync_exceptions +from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist, ValidationError +from nautobot.dcim.choices import InterfaceTypeChoices +from nautobot.dcim.models import Cable, Device, Interface, Location +from nautobot.extras.models import Status +from nautobot.ipam.models import VLAN, VRF, IPAddress, IPAddressToInterface +from nautobot_ssot.contrib import CustomFieldAnnotation, NautobotModel + +from nautobot_device_onboarding.utils import diffsync_utils + + +class FilteredNautobotModel(NautobotModel): + """ + Allow Nautobot data to be filtered by the Job form inputs. + + Must be used with FilteredNautobotAdapter. + """ + + @classmethod + def _get_queryset(cls, diffsync: "DiffSync"): + """Get the queryset used to load the models data from Nautobot.""" + parameter_names = list(cls._identifiers) + list(cls._attributes) + # Here we identify any foreign keys (i.e. fields with '__' in them) so that we can load them directly in the + # first query if this function hasn't been overridden. + prefetch_related_parameters = [parameter.split("__")[0] for parameter in parameter_names if "__" in parameter] + qs = cls.get_queryset(diffsync=diffsync) + return qs.prefetch_related(*prefetch_related_parameters) + + @classmethod + def get_queryset(cls, diffsync: "DiffSync"): + """Get the queryset used to load the models data from Nautobot.""" + # Replace return with a filtered queryset. + # Access the job form inputs with diffsync ex: diffsync.job.location.name + return cls._model.objects.all() + + +class SyncNetworkDataDevice(FilteredNautobotModel): + """Shared data model representing a Device.""" + + _modelname = "device" + _model = Device + _identifiers = ( + "name", + "serial", + ) + _attributes = ("last_network_data_sync",) + _children = {"interface": "interfaces"} + + name: str + serial: str + + last_network_data_sync: Annotated[ + Optional[str], CustomFieldAnnotation(key="last_network_data_sync", name="last_network_data_sync") + ] + + interfaces: List["SyncNetworkDataInterface"] = [] + + @classmethod + def _get_queryset(cls, diffsync: "DiffSync"): + """Get the queryset used to load the models data from Nautobot. + + job.command_getter_result contains the result from the CommandGetter job. + Only devices that actually responded with data should be considered for the sync. + """ + return diffsync.job.devices_to_load + + @classmethod + def create(cls, diffsync, ids, attrs): + """ + Do not create new devices. + + Network devices need to exist in Nautobot prior to syncing data and + need to be included in the queryset generated based on job form inputs. + """ + diffsync.job.logger.error( + f"Network device {ids} is not included in the Nautobot devices " + "selected for syncing. This device either does not exist in Nautobot " + "or was not included based on filter criteria provided on the job form." + ) + return None + + def delete(self): + """Prevent device deletion.""" + self.diffsync.job.logger.error(f"{self} will not be deleted.") + return None + + +class SyncNetworkDataInterface(FilteredNautobotModel): + """Shared data model representing an Interface.""" + + _modelname = "interface" + _model = Interface + _identifiers = ( + "device__name", + "name", + ) + _attributes = ( + "status__name", + "type", + "mac_address", + "mtu", + # "parent_interface__name", + "mode", + "enabled", + "description", + ) + + device__name: str + name: str + + status__name: Optional[str] + type: Optional[str] + mac_address: Optional[str] + mtu: Optional[str] + parent_interface__name: Optional[str] + lag__name: Optional[str] + mode: Optional[str] + enabled: Optional[bool] + description: Optional[str] + + +class SyncNetworkDataIPAddress(DiffSyncModel): + """Shared data model representing an IPAddress.""" + + _modelname = "ip_address" + _identifiers = ("host",) + _attributes = ("type", "ip_version", "mask_length", "status__name") + + host: str + + mask_length: int + type: str + ip_version: int + status__name: str + + @classmethod + def create(cls, diffsync, ids, attrs): + """Create a new IPAddress object.""" + diffsync_utils.get_or_create_ip_address( + host=ids["host"], + mask_length=attrs["mask_length"], + namespace=diffsync.job.namespace, + default_ip_status=diffsync.job.ip_address_status, + default_prefix_status=diffsync.job.default_prefix_status, + job=diffsync.job, + ) + return super().create(diffsync, ids, attrs) + + def update(self, attrs): + """Update an existing IPAddress object.""" + try: + ip_address = IPAddress.objects.get(host=self.host, parent__namespace=self.diffsync.job.namespace) + except ObjectDoesNotExist as err: + self.job.logger.error(f"{self} failed to update, {err}") + if attrs.get("mask_length"): + ip_address.mask_length = attrs["mask_length"] + if attrs.get("status__name"): + ip_address.status = Status.objects.get(name=attrs["status__name"]) + if attrs.get("ip_version"): + ip_address.ip_version = attrs["ip_version"] + try: + ip_address.validated_save() + except ValidationError as err: + self.job.logger.error(f"{self} failed to update, {err}") + + return super().update(attrs) + + +class SyncNetworkDataIPAddressToInterface(FilteredNautobotModel): + """Shared data model representing an IPAddressToInterface.""" + + _modelname = "ipaddress_to_interface" + _model = IPAddressToInterface + _identifiers = ("interface__device__name", "interface__name", "ip_address__host") + + interface__device__name: str + interface__name: str + ip_address__host: str + + @classmethod + def _get_queryset(cls, diffsync: "DiffSync"): + """Get the queryset used to load the models data from Nautobot.""" + return IPAddressToInterface.objects.filter(interface__device__in=diffsync.job.devices_to_load) + + +class SyncNetworkDataVLAN(DiffSyncModel): + """Shared data model representing a VLAN.""" + + _model = VLAN + _modelname = "vlan" + _identifiers = ("vid", "name", "location__name") + + vid: int + name: str + location__name: str + + @classmethod + def create(cls, diffsync, ids, attrs): + """Create a new VLAN.""" + location = None + try: + location = Location.objects.get(name=ids["location__name"]) + except ObjectDoesNotExist: + diffsync.job.logger.warning( + f"While creating VLAN {ids['vid']} - {ids['name']}, " + f"unable to find a Location with name: {ids['location__name']}. " + "This VLAN will be created without a Location" + ) + except MultipleObjectsReturned: + diffsync.job.logger.warning( + f"While creating VLAN {ids['vid']} - {ids['name']}, " + f"Multiple Locations were found with name: {ids['location__name']}. " + "This VLAN will be created without a Location" + ) + try: + vlan = VLAN( + name=ids["name"], + vid=ids["vid"], + location=location, + status=Status.objects.get(name="Active"), # TODO: this can't be hardcoded, add a form input + ) + vlan.validated_save() + except ValidationError as err: + diffsync.job.logger.error(f"VLAN {vlan} failed to create, {err}") + + return super().create(diffsync, ids, attrs) + + +class SyncNetworkDataTaggedVlansToInterface(DiffSyncModel): + """Shared data model representing a TaggedVlanToInterface.""" + + _modelname = "tagged_vlans_to_interface" + _identifiers = ("device__name", "name") + _attributes = ("tagged_vlans",) + + device__name: str + name: str + + tagged_vlans: Optional[list] + + @classmethod + def _get_and_assign_tagged_vlans(cls, diffsync, attrs, interface): + """Loop through the tagged vlans for an interface and assign them.""" + for network_vlan in attrs["tagged_vlans"]: + try: + nautobot_vlan = VLAN.objects.get( + name=network_vlan["name"], vid=network_vlan["id"], location=interface.device.location + ) + interface.tagged_vlans.add(nautobot_vlan) + except ObjectDoesNotExist: + diffsync.job.logger.error( + f"Failed to assign tagged vlan to {interface.device}:{interface}, unable to locate a vlan " + f"with attributes [name: {network_vlan['name']}, vid: {network_vlan['id']} " + f"location: {interface.device.location}]" + ) + raise diffsync_exceptions.ObjectNotCreated + + @classmethod + def create(cls, diffsync, ids, attrs): + """Assign tagged vlans to an interface.""" + if attrs.get("tagged_vlans"): + try: + interface = Interface.objects.get(device__name=ids["device__name"], name=ids["name"]) + except ObjectDoesNotExist: + diffsync.job.logger.error( + f"Failed to assign tagged vlans {attrs['tagged_vlans']}. An interface with " + f"attributes: [device__name: {ids['device__name']} name: {ids['name']}] was not found." + ) + raise diffsync_exceptions.ObjectNotCreated + cls._get_and_assign_tagged_vlans(diffsync, attrs, interface) + if interface: + try: + interface.validated_save() + except ValidationError as err: + diffsync.job.logger.error( + f"Failed to assign tagged vlans {attrs['tagged_vlans']} to {interface} on {interface.device}, {err}" + ) + raise diffsync_exceptions.ObjectNotCreated + return super().create(diffsync, ids, attrs) + + def update(self, attrs): + """Update tagged vlans.""" + if attrs.get("tagged_vlans"): + try: + interface = Interface.objects.get(**self.get_identifiers()) + interface.tagged_vlans.clear() + except ObjectDoesNotExist: + self.diffsync.job.logger.error( + f"Failed to assign tagged vlans {attrs['tagged_vlans']}. An interface with " + f"attributes: [{self.get_identifiers}] was not found." + ) + raise diffsync_exceptions.ObjectNotUpdated + self._get_and_assign_tagged_vlans(self.diffsync, attrs, interface) + try: + interface.validated_save() + except ValidationError as err: + self.diffsync.job.logger.error( + f"Failed to assign tagged vlans {attrs['tagged_vlans']} to {interface} on {interface.device}, {err}" + ) + raise diffsync_exceptions.ObjectNotUpdated + return super().update(attrs) + + +class SyncNetworkDataUnTaggedVlanToInterface(DiffSyncModel): + """Shared data model representing a UnTaggedVlanToInterface.""" + + _modelname = "untagged_vlan_to_interface" + _identifiers = ("device__name", "name") + _attributes = ("untagged_vlan",) + + device__name: str + name: str + + untagged_vlan: Optional[dict] + + @classmethod + def _get_and_assign_untagged_vlan(cls, diffsync, attrs, interface): + """Assign an untagged vlan to an interface.""" + try: + vlan = VLAN.objects.get( + name=attrs["untagged_vlan"]["name"], + vid=attrs["untagged_vlan"]["id"], + location=interface.device.location, + ) + interface.untagged_vlan = vlan + except ObjectDoesNotExist: + diffsync.job.logger.error( + f"Failed to assign untagged vlan to {interface.device}:{interface}, unable to locate a vlan with " + f"attributes [name: {attrs['untagged_vlan']['name']}, vid: {attrs['untagged_vlan']['id']} " + f"location: {interface.device.location}]" + ) + raise diffsync_exceptions.ObjectNotCreated + + @classmethod + def create(cls, diffsync, ids, attrs): + """Assign an untagged vlan to an interface.""" + if attrs.get("untagged_vlan"): + try: + interface = Interface.objects.get(device__name=ids["device__name"], name=ids["name"]) + except ObjectDoesNotExist: + diffsync.job.logger.error( + f"Failed to assign untagged vlan {attrs['untagged_vlan']}. An interface with " + f"attributes: [device__name: {ids['device__name']} name: {ids['name']}] was not found." + ) + raise diffsync_exceptions.ObjectNotCreated + cls._get_and_assign_untagged_vlan(diffsync, attrs, interface) + try: + interface.validated_save() + except ValidationError as err: + diffsync.job.logger.error( + f"Failed to assign untagged vlan {attrs['untagged_vlan']} to {interface} on {interface.device}, {err}" + ) + raise diffsync_exceptions.ObjectNotCreated + return super().create(diffsync, ids, attrs) + + def update(self, attrs): + """Update the untagged vlan on an interface.""" + if attrs.get("untagged_vlan"): + try: + interface = Interface.objects.get(**self.get_identifiers()) + except ObjectDoesNotExist: + self.diffsync.job.logger.error( + f"Failed to assign untagged vlan {attrs['untagged_vlan']}. An interface with " + f"attributes: [{self.get_identifiers}] was not found." + ) + raise diffsync_exceptions.ObjectNotUpdated + self._get_and_assign_untagged_vlan(self.diffsync, attrs, interface) + try: + interface.validated_save() + except ValidationError as err: + self.diffsync.job.logger.error( + f"Failed to assign untagged vlans {attrs['untagged_vlan']} to {interface} on {interface.device}, {err}" + ) + raise diffsync_exceptions.ObjectNotUpdated + return super().update(attrs) + + +class SyncNetworkDataLagToInterface(DiffSyncModel): + """Shared data model representing a LagToInterface.""" + + _modelname = "lag_to_interface" + _identifiers = ("device__name", "name") + _attributes = ("lag__interface__name",) + + device__name: str + name: str + + lag__interface__name: Optional[str] + + # TODO: move the create and update method locgic to a single utility function + @classmethod + def create(cls, diffsync, ids, attrs): + """Assign a lag to an interface.""" + if attrs["lag__interface__name"]: + try: + interface = Interface.objects.get(device__name=ids["device__name"], name=ids["name"]) + except ObjectDoesNotExist: + diffsync.job.logger.error( + f"Failed to assign lag {attrs['lag__interface__name']}. An interface with " + f"attributes: [device__name: {ids['device__name']} name: {ids['name']}] was not found." + ) + raise diffsync_exceptions.ObjectNotCreated + if interface: + try: + lag_interface = Interface.objects.get( + name=attrs["lag__interface__name"], device=interface.device, type=InterfaceTypeChoices.TYPE_LAG + ) + interface.lag = lag_interface + interface.validated_save() + except ObjectDoesNotExist: + diffsync.job.logger.error( + f"Failed to assign lag to {interface.device}:{interface}, unable to locate a lag interface " + f"with attributes [name: {attrs['lag__interface__name']}, device: {interface.device.name} " + f"type: {InterfaceTypeChoices.TYPE_LAG}]" + ) + raise diffsync_exceptions.ObjectNotCreated + except ValidationError as err: + diffsync.job.logger.error( + f"Failed to assign lag {lag_interface} to {interface} on {interface.device}, {err}" + ) + raise diffsync_exceptions.ObjectNotCreated + return super().create(diffsync, ids, attrs) + + def update(self, attrs): + """Update and interface lag.""" + if attrs.get("lag__interface__name"): + try: + interface = Interface.objects.get(**self.get_identifiers()) + except ObjectDoesNotExist: + self.diffsync.job.logger.error( + f"Failed to assign untagged lag {attrs['lag__interface__name']}. " + f"An interface with attributes: [{self.get_identifiers}] was not found." + ) + raise diffsync_exceptions.ObjectNotUpdated + try: + lag_interface = Interface.objects.get( + name=attrs["lag__interface__name"], device=interface.device, type=InterfaceTypeChoices.TYPE_LAG + ) + interface.lag = lag_interface + interface.validated_save() + except ObjectDoesNotExist: + self.diffsync.job.logger.error( + f"Failed to assign lag to {interface}, unable to locate a lag interface " + f"with attributes [name: {attrs['lag__interface__name']}, device: {interface.device.name} " + f"type: {InterfaceTypeChoices.TYPE_LAG}]" + ) + raise diffsync_exceptions.ObjectNotUpdated + except ValidationError as err: + self.diffsync.job.logger.error( + f"Failed to assign lag {lag_interface} to {interface} on {interface.device}, {err}" + ) + raise diffsync_exceptions.ObjectNotUpdated + + return super().update(attrs) + + +class SyncNetworkDataVRF(FilteredNautobotModel): + """Shared data model representing a VRF.""" + + _modelname = "vrf" + _model = VRF + _identifiers = ("name", "namespace__name") + + name: str + namespace__name: str + + +class SyncNetworkDataVrfToInterface(DiffSyncModel): + """Shared data model representing a VrfToInterface.""" + + _modelname = "vrf_to_interface" + _identifiers = ("device__name", "name") + _attributes = ("vrf",) + + device__name: str + name: str + + vrf: Optional[dict] + + @classmethod + def _get_and_assign_vrf(cls, diffsync, attrs, interface): + """Assign a vrf to an interface.""" + try: + vrf = VRF.objects.get( + name=attrs["vrf"]["name"], + namespace=diffsync.job.namespace, + ) + except ObjectDoesNotExist: + diffsync.job.logger.error( + f"Failed to assign vrf to {interface.device}:{interface}, unable to locate a vrf with attributes " + f"[name: {attrs['vrf']['name']} " + f"namespace: {diffsync.job.namespace}]" + ) + raise diffsync_exceptions.ObjectNotCreated + except MultipleObjectsReturned: + diffsync.job.logger.error( + f"Failed to assign vrf to {interface.device}:{interface}, there are multipple vrfs with attributes " + f"[name: {attrs['vrf']['name']} " + f"namespace: {diffsync.job.namespace}]. " + "Unsure which to assign." + ) + raise diffsync_exceptions.ObjectNotCreated + try: + vrf.devices.add(interface.device) + vrf.validated_save() + except Exception as err: + diffsync.logger.error(f"Failed to assign device: {interface.device} to vrf: {vrf}, {err}") + raise diffsync_exceptions.ObjectNotCreated + interface.vrf = vrf + + @classmethod + def create(cls, diffsync, ids, attrs): + """Assign a vrf to an interface.""" + if attrs.get("vrf"): + try: + interface = Interface.objects.get(device__name=ids["device__name"], name=ids["name"]) + except ObjectDoesNotExist: + diffsync.job.logger.error( + f"Failed to assign vrf {attrs['vrf']}. An interface with attributes: " + f"[device__name: {ids['device__name']} name: {ids['name']}] was not found." + ) + raise diffsync_exceptions.ObjectNotCreated + cls._get_and_assign_vrf(diffsync, attrs, interface) + try: + interface.validated_save() + except ValidationError as err: + diffsync.job.logger.error( + f"Failed to assign vrf {attrs['vrf']} to {interface} on {interface.device}, {err}" + ) + raise diffsync_exceptions.ObjectNotCreated + return super().create(diffsync, ids, attrs) + + def update(self, attrs): + """Update the vrf on an interface.""" + if attrs.get("vrf"): + try: + interface = Interface.objects.get(**self.get_identifiers()) + except ObjectDoesNotExist: + self.diffsync.job.logger.error( + f"Failed to assign vrf {attrs['vrf']['name']}. " + f"An interface with attributes: [{self.get_identifiers}] was not found." + ) + raise diffsync_exceptions.ObjectNotUpdated + self._get_and_assign_vrf(self.diffsync, attrs, interface) + try: + interface.validated_save() + except ValidationError as err: + self.diffsync.job.logger.error( + f"Failed to assign vrf {attrs['vrf']} to {interface} on {interface.device}, {err}" + ) + raise diffsync_exceptions.ObjectNotUpdated + return super().update(attrs) + + +class SyncNetworkDataCable(FilteredNautobotModel): + """Shared data model representing a cable between two interfaces.""" + + _modelname = "cable" + _model = Cable + _identifiers = ( + "termination_a__app_label", + "termination_a__model", + "termination_a__device__name", + "termination_a__name", + "termination_b__app_label", + "termination_b__model", + "termination_b__device__name", + "termination_b__name", + ) + + _attributes = ("status__name",) + + termination_a__app_label: str + termination_a__model: str + termination_a__device__name: str + termination_a__name: str + termination_b__app_label: str + termination_b__model: str + termination_b__device__name: str + termination_b__name: str + + status__name: str diff --git a/nautobot_device_onboarding/helpers.py b/nautobot_device_onboarding/helpers.py deleted file mode 100644 index d0d7bd9c..00000000 --- a/nautobot_device_onboarding/helpers.py +++ /dev/null @@ -1,40 +0,0 @@ -"""OnboardingTask Django model.""" - -import socket - -import netaddr -from netaddr.core import AddrFormatError - -from nautobot_device_onboarding.exceptions import OnboardException - - -def onboarding_task_fqdn_to_ip(address): - """Method to assure OT has FQDN resolved to IP address and rewritten into OT. - - If it is a DNS name, attempt to resolve the DNS address and assign the IP address to the - name. - - Returns: - None - - Raises: - OnboardException("fail-general"): - When a prefix was entered for an IP address - OnboardException("fail-dns"): - When a Name lookup via DNS fails to resolve an IP address - """ - try: - # If successful, this is an IP address and can pass - netaddr.IPAddress(address) - return address - # Raise an Exception for Prefix values - except ValueError as err: - raise OnboardException(f"fail-general - ERROR appears a prefix was entered: {address}") from err - # An AddrFormatError exception means that there is not an IP address in the field, and should continue on - except AddrFormatError: - try: - # Perform DNS Lookup - return socket.gethostbyname(address) - except socket.gaierror as err: - # DNS Lookup has failed, Raise an exception for unable to complete DNS lookup - raise OnboardException(f"fail-dns - ERROR failed to complete DNS lookup: {address}") from err diff --git a/nautobot_device_onboarding/jinja_filters.py b/nautobot_device_onboarding/jinja_filters.py new file mode 100755 index 00000000..0ffa37ac --- /dev/null +++ b/nautobot_device_onboarding/jinja_filters.py @@ -0,0 +1,188 @@ +"""Filters for Jinja2 PostProcessing.""" + +import logging +from itertools import chain + +from django_jinja import library +from netutils.vlan import vlanconfig_to_list + +from nautobot_device_onboarding.constants import INTERFACE_TYPE_MAP_STATIC + +# https://docs.nautobot.com/projects/core/en/stable/development/apps/api/platform-features/jinja2-filters/ + +logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") +logger = logging.getLogger(__name__) + + +@library.filter +def map_interface_type(interface_type): + """Map interface type to a Nautobot type.""" + return INTERFACE_TYPE_MAP_STATIC.get(interface_type, "other") + + +@library.filter +def extract_prefix(network): + """Extract the prefix length from the IP/Prefix. E.g 192.168.1.1/24.""" + return network.split("/")[-1] + + +@library.filter +def interface_status_to_bool(status): + """Take links or admin status and change to boolean.""" + return "up" in status.lower() + + +@library.filter +def port_mode_to_nautobot(current_mode): + """Take links or admin status and change to boolean.""" + mode_mapping = { + "access": "access", + "trunk": "tagged", + "bridged": "tagged", + "routed": "", + } + return mode_mapping.get(current_mode, "") + + +@library.filter +def key_exist_or_default(dict_obj, key): + """Take a dict with a key and if its not truthy return a default.""" + if not dict_obj.get(key): + return {} + return dict_obj + + +@library.filter +def flatten_list_of_dict_from_value(list_of_dicts, value): + """Takes a list of dictionaries with a value and flattens it.""" + flat_data = {list(item.keys())[0]: item[list(item.keys())[0]][value] for item in list_of_dicts} + return flat_data + + +@library.filter +def flatten_dict_from_value(main_dict, wanted_value): + """Takes a dictionary of dictionaries with a value and flattens it.""" + return {k: v[wanted_value] for k, v in main_dict.items()} + + +@library.filter +def get_entry_from_dict(dict_obj, key): + """Take a dict with a key and return its object.""" + return dict_obj.get(key, "") + + +def _interface_mode_logic(dict_item): # pylint: disable=too-many-return-statements + """Helper for interface_mode_logic to make it more DRY.""" + if dict_item.get("admin_mode"): + if "access" in dict_item["admin_mode"].lower(): + return "access" + if dict_item["admin_mode"] == "trunk" and dict_item["trunking_vlans"] in ["ALL", "1-4094", ["ALL"], ["1-4094"]]: + return "tagged-all" + if dict_item["admin_mode"] == "trunk": + return "tagged" + if "dynamic" in dict_item["admin_mode"]: + if "access" in dict_item["mode"]: + return "access" + if dict_item["mode"] in ["trunk", "down"] and dict_item["trunking_vlans"] in [ + "ALL", + "1-4094", + ["ALL"], + ["1-4094"], + ]: + return "tagged-all" + if dict_item["mode"] == "trunk": + return "tagged" + return "" + + +@library.filter +def interface_mode_logic(item): # pylint: disable=too-many-return-statements + """Logic to translate network modes to nautobot mode.""" + if isinstance(item, dict): + return _interface_mode_logic(item) + if len(item) == 1: + return _interface_mode_logic(item[0]) + return item + + +@library.filter +def get_vlan_data(item, vlan_mapping, tag_type): # pylint: disable=too-many-return-statements + """Get vlan information from an item.""" + current_item = item + # If for some reason the vlan mapping does not come back, skip adding vlans. + if isinstance(vlan_mapping, list): + logger.debug(f"Unable to format, vlan dict not returned: vlan_mapping {vlan_mapping}") + return [] + if isinstance(item, list) and len(item) == 1: + current_item = item[0] + int_mode = interface_mode_logic(item) + if int_mode == "tagged-all" and tag_type == "tagged": + return [] + if int_mode == "tagged-all" and tag_type == "untagged": + return [ + { + "id": current_item["native_vlan"], + "name": vlan_mapping.get( + str(current_item["native_vlan"]), f"VLAN{str(current_item['native_vlan']).zfill(4)}" + ), + } + ] + if current_item and int_mode: + if tag_type == "untagged": + if int_mode == "access": + if current_item.get("access_vlan"): + return [ + { + "id": current_item["access_vlan"], + "name": vlan_mapping.get( + str(current_item["access_vlan"]), f"VLAN{str(current_item['access_vlan']).zfill(4)}" + ), + } + ] + vid = current_item["native_vlan"] + if not vid: + vid = "1" + return [ + { + "id": vid, + "name": vlan_mapping.get(str(vid), f"VLAN{str(vid).zfill(4)}"), + } + ] + if tag_type == "tagged": + if int_mode == "access": + return [] + if not isinstance(current_item["trunking_vlans"], list): + trunk_vlans = [current_item["trunking_vlans"]] + else: + trunk_vlans = current_item["trunking_vlans"] + return [ + {"id": str(vid), "name": vlan_mapping.get(str(vid), f"VLAN{str(vid).zfill(4)}")} + for vid in list(chain.from_iterable([vlanconfig_to_list(vlan_stanza) for vlan_stanza in trunk_vlans])) + ] + return [] + + +@library.filter +def parse_junos_ip_address(item): + """Parse Junos IP and destination prefix. + + Example: + >>> [{'prefix_length': [], 'ip_address': []}] + >>> [{'prefix_length': ['10.65.229.106/31'], 'ip_address': ['10.65.229.106']}] + >>> [{'prefix_length': ['10.65.133.0/29', '10.65.133.0/29'], 'ip_address': ['10.65.133.1', '10.65.133.3']}] + >>> [{'prefix_length': None, 'ip_address': None}] + """ + if isinstance(item, list) and len(item) > 0: + if item[0]["prefix_length"] and item[0]["ip_address"]: + return [ + {"prefix_length": item[0]["prefix_length"][0].split("/")[-1], "ip_address": item[0]["ip_address"][0]} + ] + if not item[0]["prefix_length"] and item[0]["ip_address"]: + return [{"prefix_length": 32, "ip_address": item[0]["ip_address"][0]}] + return [] + + +@library.filter +def remove_fqdn(hostname): + """Remove the FQDN from the hostname.""" + return hostname.split(".")[0] diff --git a/nautobot_device_onboarding/jobs.py b/nautobot_device_onboarding/jobs.py old mode 100644 new mode 100755 index 232d4342..8521d104 --- a/nautobot_device_onboarding/jobs.py +++ b/nautobot_device_onboarding/jobs.py @@ -1,21 +1,54 @@ +# pylint: disable=attribute-defined-outside-init """Device Onboarding Jobs.""" + +import csv +import json +import logging +from io import StringIO + +from diffsync.enum import DiffSyncFlags from django.conf import settings -from nautobot.apps.jobs import Job, ObjectVar, IntegerVar, StringVar, BooleanVar +from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ObjectDoesNotExist, ValidationError +from nautobot.apps.jobs import BooleanVar, ChoiceVar, FileVar, IntegerVar, Job, MultiObjectVar, ObjectVar, StringVar from nautobot.core.celery import register_jobs -from nautobot.dcim.models import Location, DeviceType, Platform -from nautobot.extras.models import Role, SecretsGroup, SecretsGroupAssociation -from nautobot.extras.choices import SecretsGroupAccessTypeChoices, SecretsGroupSecretTypeChoices +from nautobot.dcim.models import Device, DeviceType, Location, Platform +from nautobot.extras.choices import CustomFieldTypeChoices, SecretsGroupAccessTypeChoices, SecretsGroupSecretTypeChoices +from nautobot.extras.models import CustomField, Role, SecretsGroup, SecretsGroupAssociation, Status +from nautobot.ipam.models import Namespace +from nautobot_plugin_nornir.constants import NORNIR_SETTINGS +from nautobot_ssot.jobs.base import DataSource +from nornir import InitNornir +from nornir.core.plugins.inventory import InventoryPluginRegister +from nautobot_device_onboarding.choices import SSOT_JOB_TO_COMMAND_CHOICE +from nautobot_device_onboarding.diffsync.adapters.sync_devices_adapters import ( + SyncDevicesNautobotAdapter, + SyncDevicesNetworkAdapter, +) +from nautobot_device_onboarding.diffsync.adapters.sync_network_data_adapters import ( + SyncNetworkDataNautobotAdapter, + SyncNetworkDataNetworkAdapter, +) from nautobot_device_onboarding.exceptions import OnboardException -from nautobot_device_onboarding.helpers import onboarding_task_fqdn_to_ip from nautobot_device_onboarding.netdev_keeper import NetdevKeeper +from nautobot_device_onboarding.nornir_plays.command_getter import _parse_credentials, netmiko_send_commands +from nautobot_device_onboarding.nornir_plays.empty_inventory import EmptyInventory +from nautobot_device_onboarding.nornir_plays.inventory_creator import _set_inventory +from nautobot_device_onboarding.nornir_plays.logger import NornirLogger +from nautobot_device_onboarding.nornir_plays.processor import TroubleshootingProcessor +from nautobot_device_onboarding.utils.helper import onboarding_task_fqdn_to_ip +InventoryPluginRegister.register("empty-inventory", EmptyInventory) PLUGIN_SETTINGS = settings.PLUGINS_CONFIG["nautobot_device_onboarding"] +LOGGER = logging.getLogger(__name__) +name = "Device Onboarding" # pylint: disable=invalid-name + class OnboardingTask(Job): # pylint: disable=too-many-instance-attributes - """Nautobot Job for onboarding a new device.""" + """Nautobot Job for onboarding a new device (original).""" location = ObjectVar( model=Location, @@ -38,7 +71,7 @@ class OnboardingTask(Job): # pylint: disable=too-many-instance-attributes ) role = ObjectVar( model=Role, - query_params={"content_type": "dcim.device"}, + query_params={"content_types": "dcim.device"}, required=False, description="Device role. Define ONLY to override auto-recognition of role.", ) @@ -54,12 +87,13 @@ class OnboardingTask(Job): # pylint: disable=too-many-instance-attributes description="If an exception occurs, log the exception and continue to next device.", ) - class Meta: # pylint: disable=too-few-public-methods + class Meta: """Meta object boilerplate for onboarding.""" - name = "Perform Device Onboarding" - description = "Login to a device(s) and populate Nautobot Device object(s)." + name = "Perform Device Onboarding (Original)" + description = "Login to a device(s) and populate Nautobot Device object(s). This is the original Job as part of Device Onboarding initially created in 2021." has_sensitive_variables = False + hidden = True def __init__(self, *args, **kwargs): """Overload init to instantiate class attributes per W0201.""" @@ -72,6 +106,7 @@ def __init__(self, *args, **kwargs): self.location = None self.device_type = None self.role = None + self.credentials = None super().__init__(*args, **kwargs) def run(self, *args, **data): @@ -83,11 +118,12 @@ def run(self, *args, **data): self.location = data["location"] self.device_type = data["device_type"] self.role = data["role"] + self.credentials = data["credentials"] self.logger.info("START: onboarding devices") # allows for itteration without having to spawn multiple jobs # Later refactor to use nautobot-plugin-nornir - for address in data["ip_address"].split(","): + for address in data["ip_address"].replace(" ", "").split(","): try: self._onboard(address=address) except OnboardException as err: @@ -111,9 +147,9 @@ def _onboard(self, address): password=self.password, secret=self.secret, napalm_driver=self.platform.napalm_driver if self.platform and self.platform.napalm_driver else None, - optional_args=self.platform.napalm_args - if self.platform and self.platform.napalm_args - else settings.NAPALM_ARGS, + optional_args=( + self.platform.napalm_args if self.platform and self.platform.napalm_args else settings.NAPALM_ARGS + ), ) netdev.get_onboarding_facts() netdev_dict = netdev.get_netdev_dict() @@ -126,6 +162,7 @@ def _onboard(self, address): "netdev_nb_role_name": self.role.name if self.role else PLUGIN_SETTINGS["default_device_role"], "netdev_nb_role_color": PLUGIN_SETTINGS["default_device_role_color"], "netdev_nb_platform_name": self.platform.name if self.platform else None, + "netdev_nb_credentials": self.credentials if PLUGIN_SETTINGS["assign_secrets_group"] else None, # Kwargs discovered on the Onboarded Device: "netdev_hostname": netdev_dict["netdev_hostname"], "netdev_vendor": netdev_dict["netdev_vendor"], @@ -177,4 +214,562 @@ def _parse_credentials(self, credentials): self.secret = settings.NAPALM_ARGS.get("secret", None) -register_jobs(OnboardingTask) +class SSOTSyncDevices(DataSource): # pylint: disable=too-many-instance-attributes + """Job for syncing basic device info from a network into Nautobot.""" + + def __init__(self, *args, **kwargs): + """Initialize SSoTSyncDevices.""" + super().__init__(*args, **kwargs) + self.processed_csv_data = {} + self.task_kwargs_csv_data = {} + + self.diffsync_flags = DiffSyncFlags.SKIP_UNMATCHED_DST + + class Meta: + """Metadata about this Job.""" + + name = "Sync Devices From Network" + description = "Synchronize basic device information into Nautobot from one or more network devices. Information includes Device Name, Serial Number, Management IP/Interface." + + debug = BooleanVar( + default=False, + description="Enable for more verbose logging.", + ) + csv_file = FileVar( + label="CSV File", required=False, description="If a file is provided all the options below will be ignored." + ) + location = ObjectVar( + model=Location, + required=False, + query_params={"content_type": "dcim.device"}, + description="Assigned Location for all synced device(s)", + ) + namespace = ObjectVar(model=Namespace, required=False, description="Namespace ip addresses belong to.") + ip_addresses = StringVar( + required=False, + description="IP address of the device to sync, specify in a comma separated list for multiple devices.", + label="IPv4 addresses", + ) + port = IntegerVar(required=False, default=22) + timeout = IntegerVar(required=False, default=30) + set_mgmt_only = BooleanVar( + default=True, + label="Set Management Only", + description="If True, new interfaces that are created will be set to management only. If False, new interfaces will be set to not be management only.", + ) + update_devices_without_primary_ip = BooleanVar( + default=False, + description="If a device at the specified location already exists in Nautobot but the primary ip address " + "does not match an ip address entered, update this device with the sync.", + ) + device_role = ObjectVar( + model=Role, + query_params={"content_types": "dcim.device"}, + required=False, + description="Role to be applied to all synced devices.", + ) + device_status = ObjectVar( + model=Status, + query_params={"content_types": "dcim.device"}, + required=False, + description="Status to be applied to all synced devices.", + ) + interface_status = ObjectVar( + model=Status, + query_params={"content_types": "dcim.interface"}, + required=False, + description="Status to be applied to all new synced device interfaces. This value does not update with additional syncs.", + ) + ip_address_status = ObjectVar( + label="IP address status", + model=Status, + query_params={"content_types": "ipam.ipaddress"}, + required=False, + description="Status to be applied to all new synced IP addresses. This value does not update with additional syncs.", + ) + secrets_group = ObjectVar( + model=SecretsGroup, required=False, description="SecretsGroup for device connection credentials." + ) + platform = ObjectVar( + model=Platform, + required=False, + description="Device platform. Define ONLY to override auto-recognition of platform.", + ) + + def load_source_adapter(self): + """Load onboarding network adapter.""" + self.source_adapter = SyncDevicesNetworkAdapter(job=self, sync=self.sync) + self.source_adapter.load() + + def load_target_adapter(self): + """Load onboarding Nautobot adapter.""" + self.target_adapter = SyncDevicesNautobotAdapter(job=self, sync=self.sync) + self.target_adapter.load() + + def _convert_sring_to_bool(self, string, header): + """Given a string of 'true' or 'false' convert to bool.""" + if string.lower() == "true": + return True + if string.lower() == "false": + return False + raise ValidationError( + f"'{string}' in column '{header}' failed to convert to a boolean value. " + "Please use either 'True' or 'False'." + ) + + def _process_csv_data(self, csv_file): + """Convert CSV data into a dictionary containing Nautobot objects.""" + self.logger.info("Decoding CSV file...") + decoded_csv_file = csv_file.read().decode("utf-8") + csv_reader = csv.DictReader(StringIO(decoded_csv_file)) + self.logger.info("Processing CSV data...") + processing_failed = False + processed_csv_data = {} + self.task_kwargs_csv_data = {} + row_count = 1 + for row in csv_reader: + query = None + try: + query = f"location_name: {row.get('location_name')}, location_parent_name: {row.get('location_parent_name')}" + if row.get("location_parent_name"): + location = Location.objects.get( + name=row["location_name"].strip(), parent__name=row["location_parent_name"].strip() + ) + else: + query = query = f"location_name: {row.get('location_name')}" + location = Location.objects.get(name=row["location_name"].strip(), parent=None) + query = f"device_role: {row.get('device_role_name')}" + device_role = Role.objects.get( + name=row["device_role_name"].strip(), + ) + query = f"namespace: {row.get('namespace')}" + namespace = Namespace.objects.get( + name=row["namespace"].strip(), + ) + query = f"device_status: {row.get('device_status_name')}" + device_status = Status.objects.get( + name=row["device_status_name"].strip(), + ) + query = f"interface_status: {row.get('interface_status_name')}" + interface_status = Status.objects.get( + name=row["interface_status_name"].strip(), + ) + query = f"ip_address_status: {row.get('ip_address_status_name')}" + ip_address_status = Status.objects.get( + name=row["ip_address_status_name"].strip(), + ) + query = f"secrets_group: {row.get('secrets_group_name')}" + secrets_group = SecretsGroup.objects.get( + name=row["secrets_group_name"].strip(), + ) + query = f"platform: {row.get('platform_name')}" + platform = None + if row.get("platform_name"): + platform = Platform.objects.get( + name=row["platform_name"].strip(), + ) + + set_mgmgt_only = self._convert_sring_to_bool( + string=row["set_mgmt_only"].lower().strip(), header="set_mgmt_only" + ) + update_devices_without_primary_ip = self._convert_sring_to_bool( + string=row["update_devices_without_primary_ip"].lower().strip(), + header="update_devices_without_primary_ip", + ) + + processed_csv_data[row["ip_address_host"]] = {} + processed_csv_data[row["ip_address_host"]]["location"] = location + processed_csv_data[row["ip_address_host"]]["namespace"] = namespace + processed_csv_data[row["ip_address_host"]]["port"] = int(row["port"].strip()) + processed_csv_data[row["ip_address_host"]]["timeout"] = int(row["timeout"].strip()) + processed_csv_data[row["ip_address_host"]]["set_mgmt_only"] = set_mgmgt_only + processed_csv_data[row["ip_address_host"]][ + "update_devices_without_primary_ip" + ] = update_devices_without_primary_ip + processed_csv_data[row["ip_address_host"]]["device_role"] = device_role + processed_csv_data[row["ip_address_host"]]["device_status"] = device_status + processed_csv_data[row["ip_address_host"]]["interface_status"] = interface_status + processed_csv_data[row["ip_address_host"]]["ip_address_status"] = ip_address_status + processed_csv_data[row["ip_address_host"]]["secrets_group"] = secrets_group + processed_csv_data[row["ip_address_host"]]["platform"] = platform + + # Prepare ids to send to the job in celery + self.task_kwargs_csv_data[row["ip_address_host"]] = {} + self.task_kwargs_csv_data[row["ip_address_host"]]["port"] = int(row["port"].strip()) + self.task_kwargs_csv_data[row["ip_address_host"]]["timeout"] = int(row["timeout"].strip()) + self.task_kwargs_csv_data[row["ip_address_host"]]["secrets_group"] = ( + secrets_group.id if secrets_group else "" + ) + self.task_kwargs_csv_data[row["ip_address_host"]]["platform"] = platform.id if platform else "" + row_count += 1 + except ObjectDoesNotExist as err: + self.logger.error(f"(row {sum([row_count, 1])}), {err} {query}") + processing_failed = True + row_count += 1 + except ValidationError as err: + self.logger.error(f"(row {sum([row_count, 1])}), {err}") + row_count += 1 + if processing_failed: + processed_csv_data = None + if row_count <= 1: + self.logger.error("The CSV file is empty!") + processed_csv_data = None + + return processed_csv_data + + def run( + self, + dryrun, + memory_profiling, + debug, + csv_file, + location, + namespace, + ip_addresses, + set_mgmt_only, + update_devices_without_primary_ip, + device_role, + device_status, + interface_status, + ip_address_status, + port, + timeout, + secrets_group, + platform, + *args, + **kwargs, + ): + """Run sync.""" + self.dryrun = dryrun + self.memory_profiling = memory_profiling + self.debug = debug + + if csv_file: + self.processed_csv_data = self._process_csv_data(csv_file=csv_file) + if self.processed_csv_data: + # create a list of ip addresses for processing in the adapter + self.ip_addresses = [] + for ip_address in self.processed_csv_data: + self.ip_addresses.append(ip_address) + # prepare the task_kwargs needed by the CommandGetterDO job + self.job_result.task_kwargs = {"debug": debug, "csv_file": self.task_kwargs_csv_data} + else: + raise ValidationError(message="CSV check failed. No devices will be synced.") + + else: + # Verify that all requried form inputs have been provided + required_inputs = { + "location": location, + "namespace": namespace, + "ip_addresses": ip_addresses, + "device_role": device_role, + "device_status": device_status, + "interface_status": interface_status, + "ip_address_status": ip_address_status, + "port": port, + "timeout": timeout, + "secrets_group": secrets_group, + } + + missing_required_inputs = [ + form_field for form_field, input_value in required_inputs.items() if not input_value + ] + if not missing_required_inputs: + pass + else: + self.logger.error(f"Missing requried inputs from job form: {missing_required_inputs}") + raise ValidationError(message=f"Missing required inputs {missing_required_inputs}") + + self.location = location + self.namespace = namespace + self.ip_addresses = ip_addresses.replace(" ", "").split(",") + self.set_mgmt_only = set_mgmt_only + self.update_devices_without_primary_ip = update_devices_without_primary_ip + self.device_role = device_role + self.device_status = device_status + self.interface_status = interface_status + self.ip_address_status = ip_address_status + self.port = port + self.timeout = timeout + self.secrets_group = secrets_group + self.platform = platform + + self.job_result.task_kwargs = { + "debug": debug, + "location": location, + "namespace": namespace, + "ip_addresses": ip_addresses, + "set_mgmt_only": set_mgmt_only, + "update_devices_without_primary_ip": update_devices_without_primary_ip, + "device_role": device_role, + "device_status": device_status, + "interface_status": interface_status, + "ip_address_status": ip_address_status, + "port": port, + "timeout": timeout, + "secrets_group": secrets_group, + "platform": platform, + "csv_file": "", + } + super().run(dryrun, memory_profiling, *args, **kwargs) + + +class SSOTSyncNetworkData(DataSource): # pylint: disable=too-many-instance-attributes + """Job syncing extended device attributes into Nautobot.""" + + def __init__(self, *args, **kwargs): + """Initialize SSOTSyncNetworkData.""" + super().__init__(*args, **kwargs) + + self.filtered_devices = None # Queryset of devices based on job form inputs + self.command_getter_result = None # Dict result from CommandGetter nornir task + self.devices_to_load = None # Queryset consisting of devices that responded + + class Meta: + """Metadata about this Job.""" + + name = "Sync Network Data From Network" + description = "Synchronize extended device attribute information into Nautobot from one or more network devices. Information includes Interfaces, IP Addresses, Prefixes, VLANs and VRFs." + + debug = BooleanVar(description="Enable for more verbose logging.") + sync_vlans = BooleanVar(default=False, description="Sync VLANs and interface VLAN assignments.") + sync_vrfs = BooleanVar(default=False, description="Sync VRFs and interface VRF assignments.") + sync_cables = BooleanVar(default=False, description="Sync cables between interfaces via a LLDP or CDP.") + namespace = ObjectVar( + model=Namespace, required=True, description="The namespace for all IP addresses created or updated in the sync." + ) + interface_status = ObjectVar( + model=Status, + query_params={"content_types": "dcim.interface"}, + required=True, + description="Status to be applied to all synced device interfaces. This will update existing interface statuses.", + ) + ip_address_status = ObjectVar( + label="IP address status", + model=Status, + query_params={"content_types": "ipam.ipaddress"}, + required=True, + description="Status to be applied to all synced IP addresses. This will update existing IP address statuses", + ) + + default_prefix_status = ObjectVar( + model=Status, + query_params={"content_types": "ipam.prefix"}, + required=True, + description="Status to be applied to all new created prefixes. Prefix status does not update with additional syncs.", + ) + devices = MultiObjectVar( + model=Device, + required=False, + description="Device(s) to update.", + ) + location = ObjectVar( + model=Location, + query_params={"content_type": "dcim.device"}, + required=False, + description="Only update devices at a specific location.", + ) + device_role = ObjectVar( + model=Role, + query_params={"content_types": "dcim.device"}, + required=False, + description="Only update devices with the selected role.", + ) + platform = ObjectVar( + model=Platform, + required=False, + description="Only update devices with the selected platform.", + ) + + def load_source_adapter(self): + """Load network data adapter.""" + # do not load source data if the job form does not filter which devices to sync + if self.filtered_devices: + self.source_adapter = SyncNetworkDataNetworkAdapter(job=self, sync=self.sync) + self.source_adapter.load() + + def load_target_adapter(self): + """Load network data Nautobot adapter.""" + self.target_adapter = SyncNetworkDataNautobotAdapter(job=self, sync=self.sync) + self.target_adapter.load() + + def run( + self, + dryrun, + memory_profiling, + debug, + namespace, + interface_status, + ip_address_status, + default_prefix_status, + location, + devices, + device_role, + platform, + sync_vlans, + sync_vrfs, + sync_cables, + *args, + **kwargs, + ): + """Run sync.""" + self.dryrun = dryrun + self.memory_profiling = memory_profiling + self.debug = debug + self.namespace = namespace + self.ip_address_status = ip_address_status + self.interface_status = interface_status + self.default_prefix_status = default_prefix_status + self.location = location + self.devices = devices + self.device_role = device_role + self.platform = platform + self.sync_vlans = sync_vlans + self.sync_vrfs = sync_vrfs + self.sync_cables = sync_cables + + # Check for last_network_data_sync CustomField + if self.debug: + self.logger.debug("Checking for last_network_data_sync custom field") + try: + cf = CustomField.objects.get(key="last_network_data_sync") + except ObjectDoesNotExist: + cf, _ = CustomField.objects.get_or_create( + label="Last Network Data Sync", + key="last_network_data_sync", + type=CustomFieldTypeChoices.TYPE_DATE, + required=False, + ) + + cf.content_types.add(ContentType.objects.get_for_model(Device)) + + if self.debug: + self.logger.debug("Custom field found or created") + except Exception as err: # pylint: disable=broad-exception-caught + self.logger.error(f"Failed to get or create last_network_data_sync custom field, {err}") + return + + # Filter devices based on form input + device_filter = {} + if self.devices: + device_filter["id__in"] = [device.id for device in devices] + if self.location: + device_filter["location"] = location + if self.device_role: + device_filter["role"] = device_role + if self.platform: + device_filter["platform"] = platform + if device_filter: # prevent all devices from being returned by an empty filter + self.filtered_devices = Device.objects.filter(**device_filter) + else: + self.logger.error("No device filter options were provided, no devices will be synced.") + + # Stop the job if no devices are returned after filtering + if not self.filtered_devices: + self.logger.info("No devices returned based on filter selections.") + return + + # Log the devices that will be synced + filtered_devices_names = list(self.filtered_devices.values_list("name", flat=True)) + self.logger.info(f"{len(filtered_devices_names)} devices will be synced") + if len(filtered_devices_names) <= 300: + self.logger.info(f"Devices: {filtered_devices_names}") + else: + self.logger.warning("Over 300 devices were selected to sync") + + self.job_result.task_kwargs = { + "debug": debug, + "ip_address_status": ip_address_status, + "default_prefix_status": default_prefix_status, + "location": location, + "devices": self.filtered_devices, + "device_role": device_role, + "sync_vlans": sync_vlans, + "sync_vrfs": sync_vrfs, + "sync_cables": sync_cables, + } + + super().run(dryrun, memory_profiling, *args, **kwargs) + + +class DeviceOnboardingTroubleshootingJob(Job): + """Simple Job to Execute Show Command.""" + + debug = BooleanVar() + ip_addresses = StringVar() + port = IntegerVar(default=22) + timeout = IntegerVar(default=30) + secrets_group = ObjectVar(model=SecretsGroup) + platform = ObjectVar(model=Platform, required=True) + ssot_job_type = ChoiceVar(choices=SSOT_JOB_TO_COMMAND_CHOICE) + + class Meta: + """Meta object boilerplate for onboarding.""" + + name = "Runs Commands on a Device to simulate SSoT Command Getter." + description = "Login to a device(s) and run commands." + has_sensitive_variables = False + hidden = True + + def run(self, *args, **kwargs): # pragma: no cover + """Process onboarding task from ssot-ni job.""" + ip_addresses = kwargs["ip_addresses"].replace(" ", "").split(",") + port = kwargs["port"] + platform = kwargs["platform"] + username, password, secret = _parse_credentials(kwargs["secrets_group"]) # pylint:disable=unused-variable + + # Initiate Nornir instance with empty inventory + compiled_results = {} + try: + logger = NornirLogger(self.job_result, self.logger.getEffectiveLevel()) + with InitNornir( + runner=NORNIR_SETTINGS.get("runner"), + logging={"enabled": False}, + inventory={ + "plugin": "empty-inventory", + }, + ) as nornir_obj: + for entered_ip in ip_addresses: + single_host_inventory_constructed, _ = _set_inventory( + entered_ip, platform, port, username, password + ) + nornir_obj.inventory.hosts.update(single_host_inventory_constructed) + nr_with_processors = nornir_obj.with_processors([TroubleshootingProcessor(compiled_results)]) + if kwargs["ssot_job_type"] == "both": + kwargs.update({"sync_vrfs": True}) + kwargs.update({"sync_vlans": True}) + kwargs.update({"sync_cables": True}) + nr_with_processors.run( + task=netmiko_send_commands, + command_getter_yaml_data=nornir_obj.inventory.defaults.data["platform_parsing_info"], + command_getter_job="sync_devices", + logger=logger, + **kwargs, + ) + nr_with_processors.run( + task=netmiko_send_commands, + command_getter_yaml_data=nornir_obj.inventory.defaults.data["platform_parsing_info"], + command_getter_job="sync_network_data", + logger=logger, + **kwargs, + ) + else: + if kwargs["ssot_job_type"] == "sync_network_data": + kwargs.update({"sync_vrfs": True}) + kwargs.update({"sync_vlans": True}) + kwargs.update({"sync_cables": True}) + nr_with_processors.run( + task=netmiko_send_commands, + command_getter_yaml_data=nornir_obj.inventory.defaults.data["platform_parsing_info"], + command_getter_job=kwargs["ssot_job_type"], + logger=logger, + **kwargs, + ) + except Exception as err: # pylint: disable=broad-exception-caught + self.logger.info("Error During Sync Devices Command Getter: %s", err) + self.create_file("command_outputs.json", json.dumps(compiled_results)) + return f"Successfully ran the following commands: {', '.join(list(compiled_results.keys()))}" + + +jobs = [OnboardingTask, SSOTSyncDevices, SSOTSyncNetworkData, DeviceOnboardingTroubleshootingJob] +register_jobs(*jobs) diff --git a/nautobot_device_onboarding/migrations/0001_initial.py b/nautobot_device_onboarding/migrations/0001_initial.py index db85e40b..0c555c5a 100644 --- a/nautobot_device_onboarding/migrations/0001_initial.py +++ b/nautobot_device_onboarding/migrations/0001_initial.py @@ -1,9 +1,10 @@ # Generated by Django 3.1.3 on 2021-02-22 03:40 -from django.db import migrations, models -import django.db.models.deletion import uuid +import django.db.models.deletion +from django.db import migrations, models + class Migration(migrations.Migration): initial = True diff --git a/nautobot_device_onboarding/migrations/0001_squash__0001_0004_0005_0006.py b/nautobot_device_onboarding/migrations/0001_squash__0001_0004_0005_0006.py index 8e3cb92d..5e9ccf3f 100644 --- a/nautobot_device_onboarding/migrations/0001_squash__0001_0004_0005_0006.py +++ b/nautobot_device_onboarding/migrations/0001_squash__0001_0004_0005_0006.py @@ -2,8 +2,8 @@ import uuid -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models from nautobot.extras.models import RoleField diff --git a/nautobot_device_onboarding/migrations/0004_migrate_to_extras_role_part_1.py b/nautobot_device_onboarding/migrations/0004_migrate_to_extras_role_part_1.py index 5f531fe2..7daeb497 100644 --- a/nautobot_device_onboarding/migrations/0004_migrate_to_extras_role_part_1.py +++ b/nautobot_device_onboarding/migrations/0004_migrate_to_extras_role_part_1.py @@ -1,5 +1,4 @@ from django.db import migrations, models - from nautobot.extras.models import RoleField diff --git a/nautobot_device_onboarding/nautobot_keeper.py b/nautobot_device_onboarding/nautobot_keeper.py index 9c9c7c37..4f8e4265 100644 --- a/nautobot_device_onboarding/nautobot_keeper.py +++ b/nautobot_device_onboarding/nautobot_keeper.py @@ -1,20 +1,17 @@ """Nautobot Keeper.""" -import logging import ipaddress +import logging from django.conf import settings from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from nautobot.apps.choices import PrefixTypeChoices from nautobot.dcim.choices import InterfaceTypeChoices -from nautobot.dcim.models import Manufacturer, Device, Interface, DeviceType -from nautobot.extras.models import Role -from nautobot.dcim.models import Platform -from nautobot.dcim.models import Location -from nautobot.extras.models import Status +from nautobot.dcim.models import Device, DeviceType, Interface, Location, Manufacturer, Platform +from nautobot.extras.models import Role, Status from nautobot.extras.models.customfields import CustomField -from nautobot.ipam.models import IPAddress, Prefix, Namespace +from nautobot.ipam.models import IPAddress, Namespace, Prefix from nautobot_device_onboarding.constants import NETMIKO_TO_NAPALM_STATIC from nautobot_device_onboarding.exceptions import OnboardException @@ -93,6 +90,7 @@ def __init__( # pylint: disable=R0913,R0914 netdev_netmiko_device_type=None, onboarding_class=None, driver_addon_result=None, + netdev_nb_credentials=None, ): """Create an instance and initialize the managed attributes that are used throughout the onboard processing. @@ -112,6 +110,7 @@ def __init__( # pylint: disable=R0913,R0914 netdev_netmiko_device_type (str): Device's Netmiko device type onboarding_class (Object): Onboarding Class (future use) driver_addon_result (Any): Attached extended result (future use) + netdev_nb_credentials (Object): Device's secrets group object """ self.netdev_mgmt_ip_address = netdev_mgmt_ip_address self.netdev_nb_location_name = netdev_nb_location_name @@ -119,6 +118,7 @@ def __init__( # pylint: disable=R0913,R0914 self.netdev_nb_role_name = netdev_nb_role_name self.netdev_nb_role_color = netdev_nb_role_color self.netdev_nb_platform_name = netdev_nb_platform_name + self.netdev_nb_credentials = netdev_nb_credentials self.netdev_hostname = netdev_hostname self.netdev_vendor = netdev_vendor @@ -294,8 +294,7 @@ def ensure_device_platform(self, create_platform_if_missing=PLUGIN_SETTINGS["cre """Get platform object from Nautobot filtered by platform_slug. Args: - platform_slug (string): slug of a platform object present in Nautobot, object will be created if not present - and create_platform_if_missing is enabled + create_platform_if_missing (bool): Flag to indicate if we need to create the platform, if not already present Return: nautobot.dcim.models.Platform object @@ -412,12 +411,21 @@ def ensure_device_instance(self, default_status=PLUGIN_SETTINGS["default_device_ def ensure_interface(self): """Ensures that the interface associated with the mgmt_ipaddr exists and is assigned to the device.""" if self.netdev_mgmt_ifname: + mgmt_only_setting = PLUGIN_SETTINGS["set_management_only_interface"] + # TODO: Add option for default interface status self.nb_mgmt_ifname, _ = Interface.objects.get_or_create( name=self.netdev_mgmt_ifname, device=self.device, - defaults={"type": InterfaceTypeChoices.TYPE_OTHER, "status": Status.objects.get(name="Active")}, + defaults={ + "type": InterfaceTypeChoices.TYPE_OTHER, + "status": Status.objects.get(name="Active"), + "mgmt_only": mgmt_only_setting, + }, ) + if mgmt_only_setting: + self.nb_mgmt_ifname.mgmt_only = mgmt_only_setting + self.nb_mgmt_ifname.validated_save() ensure_default_cf(obj=self.nb_mgmt_ifname, model=Interface) @@ -468,6 +476,12 @@ def ensure_primary_ip(self): self.device.full_clean() self.device.save() + def ensure_secret_group(self): + """Optionally assign secret group from onboarding to created/updated device.""" + if PLUGIN_SETTINGS["assign_secrets_group"]: + self.device.secrets_group = self.netdev_nb_credentials + self.device.validated_save() + def ensure_device(self): """Ensure that the device represented by the DevNetKeeper exists in the Nautobot system.""" self.ensure_onboarded_device() @@ -481,3 +495,6 @@ def ensure_device(self): if PLUGIN_SETTINGS["create_management_interface_if_missing"]: self.ensure_interface() self.ensure_primary_ip() + + if PLUGIN_SETTINGS["assign_secrets_group"]: + self.ensure_secret_group() diff --git a/nautobot_device_onboarding/netdev_keeper.py b/nautobot_device_onboarding/netdev_keeper.py index 89f64471..f289f9ab 100644 --- a/nautobot_device_onboarding/netdev_keeper.py +++ b/nautobot_device_onboarding/netdev_keeper.py @@ -6,18 +6,15 @@ from django.conf import settings from napalm import get_network_driver -from napalm.base.exceptions import ConnectionException, CommandErrorException +from napalm.base.exceptions import CommandErrorException, ConnectionException from napalm.base.netmiko_helpers import netmiko_args -from netmiko import SSHDetect -from netmiko import NetMikoAuthenticationException -from netmiko import NetMikoTimeoutException -from paramiko.ssh_exception import SSHException - from nautobot.dcim.models import Platform +from netmiko import NetMikoAuthenticationException, NetMikoTimeoutException, SSHDetect +from paramiko.ssh_exception import SSHException -from nautobot_device_onboarding.onboarding.onboarding import StandaloneOnboarding from nautobot_device_onboarding.constants import NETMIKO_TO_NAPALM_STATIC from nautobot_device_onboarding.exceptions import OnboardException +from nautobot_device_onboarding.onboarding.onboarding import StandaloneOnboarding logger = logging.getLogger("rq.worker") diff --git a/nautobot_device_onboarding/nornir_plays/command_getter.py b/nautobot_device_onboarding/nornir_plays/command_getter.py new file mode 100755 index 00000000..71cefca9 --- /dev/null +++ b/nautobot_device_onboarding/nornir_plays/command_getter.py @@ -0,0 +1,316 @@ +"""CommandGetter.""" + +import json +from typing import Dict + +from django.conf import settings +from nautobot.dcim.models import Platform +from nautobot.dcim.utils import get_all_network_driver_mappings +from nautobot.extras.choices import SecretsGroupAccessTypeChoices, SecretsGroupSecretTypeChoices +from nautobot.extras.models import SecretsGroup +from nautobot_plugin_nornir.constants import NORNIR_SETTINGS +from nautobot_plugin_nornir.plugins.inventory.nautobot_orm import NautobotORMInventory +from nornir import InitNornir +from nornir.core.exceptions import NornirSubTaskError +from nornir.core.plugins.inventory import InventoryPluginRegister +from nornir.core.task import Result, Task +from nornir_netmiko.tasks import netmiko_send_command +from ntc_templates.parse import parse_output + +from nautobot_device_onboarding.constants import SUPPORTED_COMMAND_PARSERS, SUPPORTED_NETWORK_DRIVERS +from nautobot_device_onboarding.nornir_plays.empty_inventory import EmptyInventory +from nautobot_device_onboarding.nornir_plays.inventory_creator import _set_inventory +from nautobot_device_onboarding.nornir_plays.logger import NornirLogger +from nautobot_device_onboarding.nornir_plays.processor import CommandGetterProcessor +from nautobot_device_onboarding.nornir_plays.transform import add_platform_parsing_info + +InventoryPluginRegister.register("nautobot-inventory", NautobotORMInventory) +InventoryPluginRegister.register("empty-inventory", EmptyInventory) + + +def deduplicate_command_list(data): + """Deduplicates a list of dictionaries based on 'command' and 'parser' keys. + + Args: + data: A list of dictionaries. + + Returns: + A new list containing only unique elements based on 'command' and 'parser'. + """ + seen = set() + unique_list = [] + for item in data: + # Create a tuple containing only 'command' and 'parser' for comparison + key = (item["command"], item["parser"]) + if key not in seen: + seen.add(key) + unique_list.append(item) + return unique_list + + +def _get_commands_to_run(yaml_parsed_info, sync_vlans, sync_vrfs, sync_cables): + """Using merged command mapper info and look up all commands that need to be run.""" + all_commands = [] + for key, value in yaml_parsed_info.items(): + if key == "pre_processor": + for pre_processor, v in value.items(): + if not sync_vlans and pre_processor == "vlan_map": + continue + current_root_key = v.get("commands") + if isinstance(current_root_key, list): + # Means their is any "nested" structures. e.g multiple commands + for command in v["commands"]: + all_commands.append(command) + else: + if isinstance(current_root_key, dict): + all_commands.append(current_root_key) + else: + # Deduplicate commands + parser key + current_root_key = value.get("commands") + if isinstance(current_root_key, list): + # Means their is any "nested" structures. e.g multiple commands + for command in value["commands"]: + # If syncing vlans isn't inscope don't run the unneeded commands. + if not sync_vlans and key in ["interfaces__tagged_vlans", "interfaces__untagged_vlan"]: + continue + # If syncing vrfs isn't inscope remove the unneeded commands. + if not sync_vrfs and key == "interfaces__vrf": + continue + # If syncing cables isn't inscope remove the unneeded commands. + if not sync_cables and key == "cables": + continue + all_commands.append(command) + else: + if isinstance(current_root_key, dict): + # If syncing vlans isn't inscope don't run the unneeded commands. + if not sync_vlans and key in ["interfaces__tagged_vlans", "interfaces__untagged_vlan"]: + continue + # If syncing vrfs isn't inscope remove the unneeded commands. + if not sync_vrfs and key == "interfaces__vrf": + continue + # If syncing cables isn't inscope remove the unneeded commands. + if not sync_cables and key == "cables": + continue + # Means their isn't a "nested" structures. e.g 1 command + all_commands.append(current_root_key) + return deduplicate_command_list(all_commands) + + +def netmiko_send_commands( + task: Task, command_getter_yaml_data: Dict, command_getter_job: str, logger, **orig_job_kwargs +): + """Run commands specified in PLATFORM_COMMAND_MAP.""" + if not task.host.platform: + return Result(host=task.host, result=f"{task.host.name} has no platform set.", failed=True) + if task.host.platform not in SUPPORTED_NETWORK_DRIVERS or not "cisco_wlc_ssh": + return Result(host=task.host, result=f"{task.host.name} has a unsupported platform set.", failed=True) + if not command_getter_yaml_data[task.host.platform].get(command_getter_job): + return Result( + host=task.host, result=f"{task.host.name} has missing definitions in command_mapper YAML file.", failed=True + ) + task.host.data["platform_parsing_info"] = command_getter_yaml_data[task.host.platform] + commands = _get_commands_to_run( + command_getter_yaml_data[task.host.platform][command_getter_job], + orig_job_kwargs.get("sync_vlans", False), + orig_job_kwargs.get("sync_vrfs", False), + orig_job_kwargs.get("sync_cables", False), + ) + if ( + orig_job_kwargs.get("sync_cables", False) + and "cables" not in command_getter_yaml_data[task.host.platform][command_getter_job].keys() + ): + logger.error( + f"{task.host.platform} has missing definitions for cables in command_mapper YAML file. Cables will not be loaded." + ) + + logger.debug(f"Commands to run: {commands}") + # All commands in this for loop are running within 1 device connection. + for result_idx, command in enumerate(commands): + send_command_kwargs = {} + try: + current_result = task.run( + task=netmiko_send_command, + name=command["command"], + command_string=command["command"], + read_timeout=60, + **send_command_kwargs, + ) + if command.get("parser") in SUPPORTED_COMMAND_PARSERS: + if isinstance(current_result.result, str): + if "Invalid input detected at" in current_result.result: + task.results[result_idx].result = [] + task.results[result_idx].failed = False + else: + if command["parser"] == "textfsm": + try: + # Parsing textfsm ourselves instead of using netmikos use_ function to be able to handle exceptions + # ourselves. Default for netmiko is if it can't parse to return raw text which is tougher to handle. + parsed_output = parse_output( + platform=get_all_network_driver_mappings()[task.host.platform]["ntc_templates"], + command=command["command"], + data=current_result.result, + ) + task.results[result_idx].result = parsed_output + task.results[result_idx].failed = False + except Exception: # https://github.com/networktocode/ntc-templates/issues/369 + task.results[result_idx].result = [] + task.results[result_idx].failed = False + else: + if command["parser"] == "none": + try: + jsonified = json.loads(current_result.result) + task.results[result_idx].result = jsonified + task.results[result_idx].failed = False + except Exception: + task.result.failed = False + except NornirSubTaskError: + # We don't want to fail the entire subtask if SubTaskError is hit, set result to empty list and failed to False + # Handle this type or result latter in the ETL process. + task.results[result_idx].result = [] + task.results[result_idx].failed = False + + +def _parse_credentials(credentials): + """Parse and return dictionary of credentials.""" + if credentials: + try: + username = credentials.get_secret_value( + access_type=SecretsGroupAccessTypeChoices.TYPE_GENERIC, + secret_type=SecretsGroupSecretTypeChoices.TYPE_USERNAME, + ) + password = credentials.get_secret_value( + access_type=SecretsGroupAccessTypeChoices.TYPE_GENERIC, + secret_type=SecretsGroupSecretTypeChoices.TYPE_PASSWORD, + ) + try: + secret = credentials.get_secret_value( + access_type=SecretsGroupAccessTypeChoices.TYPE_GENERIC, + secret_type=SecretsGroupSecretTypeChoices.TYPE_SECRET, + ) + except Exception: # pylint: disable=broad-exception-caught + secret = None + except Exception: # pylint: disable=broad-exception-caught + return (None, None, None) + else: + username = settings.NAPALM_USERNAME + password = settings.NAPALM_PASSWORD + secret = settings.NAPALM_ARGS.get("secret", None) + return (username, password, secret) + + +def sync_devices_command_getter(job_result, log_level, kwargs): + """Nornir play to run show commands for sync_devices ssot job.""" + logger = NornirLogger(job_result, log_level) + + if kwargs["csv_file"]: # ip_addreses will be keys in a dict + ip_addresses = [] + for ip_address in kwargs["csv_file"]: + ip_addresses.append(ip_address) + else: + ip_addresses = kwargs["ip_addresses"].replace(" ", "").split(",") + port = kwargs["port"] + # timeout = kwargs["timeout"] + platform = kwargs["platform"] + username, password, secret = _parse_credentials(kwargs["secrets_group"]) + + # Initiate Nornir instance with empty inventory + try: + compiled_results = {} + with InitNornir( + runner=NORNIR_SETTINGS.get("runner"), + logging={"enabled": False}, + inventory={ + "plugin": "empty-inventory", + }, + ) as nornir_obj: + nr_with_processors = nornir_obj.with_processors([CommandGetterProcessor(logger, compiled_results, kwargs)]) + loaded_secrets_group = None + for entered_ip in ip_addresses: + if kwargs["csv_file"]: + # get platform if one was provided via csv + platform = None + platform_id = kwargs["csv_file"][entered_ip]["platform"] + if platform_id: + platform = Platform.objects.get(id=platform_id) + + # parse secrets from secrets groups provided via csv + secrets_group_id = kwargs["csv_file"][entered_ip]["secrets_group"] + if secrets_group_id: + new_secrets_group = SecretsGroup.objects.get(id=secrets_group_id) + # only update the credentials if the secrets_group specified on a csv row + # is different than the secrets group on the previous csv row. This prevents + # unnecessary repeat calls to secrets providers. + if new_secrets_group != loaded_secrets_group: + logger.info(f"Parsing credentials from Secrets Group: {new_secrets_group.name}") + loaded_secrets_group = new_secrets_group + username, password, secret = _parse_credentials(loaded_secrets_group) + if not (username and password): + logger.error(f"Unable to onboard {entered_ip}, failed to parse credentials") + single_host_inventory_constructed, exc_info = _set_inventory( + host_ip=entered_ip, + platform=platform, + port=kwargs["csv_file"][entered_ip]["port"], + username=username, + password=password, + ) + if exc_info: + logger.error(f"Unable to onboard {entered_ip}, failed with exception {exc_info}") + continue + else: + single_host_inventory_constructed, exc_info = _set_inventory( + entered_ip, platform, port, username, password + ) + if exc_info: + logger.error(f"Unable to onboard {entered_ip}, failed with exception {exc_info}") + continue + nr_with_processors.inventory.hosts.update(single_host_inventory_constructed) + nr_with_processors.run( + task=netmiko_send_commands, + command_getter_yaml_data=nr_with_processors.inventory.defaults.data["platform_parsing_info"], + command_getter_job="sync_devices", + logger=logger, + **kwargs, + ) + except Exception as err: # pylint: disable=broad-exception-caught + logger.info(f"Error During Sync Devices Command Getter: {err}") + return compiled_results + + +def sync_network_data_command_getter(job_result, log_level, kwargs): + """Nornir play to run show commands for sync_network_data ssot job.""" + logger = NornirLogger(job_result, log_level) + + try: + compiled_results = {} + qs = kwargs["devices"] + if not qs: + return None + with InitNornir( + runner=NORNIR_SETTINGS.get("runner"), + logging={"enabled": False}, + inventory={ + "plugin": "nautobot-inventory", + "options": { + "credentials_class": NORNIR_SETTINGS.get("credentials"), + "queryset": qs, + "defaults": { + "platform_parsing_info": add_platform_parsing_info(), + "network_driver_mappings": SUPPORTED_NETWORK_DRIVERS, + "sync_vlans": kwargs["sync_vlans"], + "sync_vrfs": kwargs["sync_vrfs"], + "sync_cables": kwargs["sync_cables"], + }, + }, + }, + ) as nornir_obj: + nr_with_processors = nornir_obj.with_processors([CommandGetterProcessor(logger, compiled_results, kwargs)]) + nr_with_processors.run( + task=netmiko_send_commands, + command_getter_yaml_data=nr_with_processors.inventory.defaults.data["platform_parsing_info"], + command_getter_job="sync_network_data", + logger=logger, + **kwargs, + ) + except Exception as err: # pylint: disable=broad-exception-caught + logger.info(f"Error During Sync Network Data Command Getter: {err}") + return compiled_results diff --git a/nautobot_device_onboarding/nornir_plays/empty_inventory.py b/nautobot_device_onboarding/nornir_plays/empty_inventory.py new file mode 100755 index 00000000..701a4afc --- /dev/null +++ b/nautobot_device_onboarding/nornir_plays/empty_inventory.py @@ -0,0 +1,22 @@ +"""Empty Nornir Inventory Plugin.""" + +from nornir.core.inventory import Defaults, Groups, Hosts, Inventory + +from nautobot_device_onboarding.constants import SUPPORTED_NETWORK_DRIVERS +from nautobot_device_onboarding.nornir_plays.transform import add_platform_parsing_info + + +class EmptyInventory: # pylint: disable=too-few-public-methods + """Creates an empty Nornir inventory.""" + + def load(self) -> Inventory: + """Create a default empty inventory.""" + hosts = Hosts() + defaults = Defaults( + data={ + "platform_parsing_info": add_platform_parsing_info(), + "network_driver_mappings": SUPPORTED_NETWORK_DRIVERS, + } + ) + groups = Groups() + return Inventory(hosts=hosts, groups=groups, defaults=defaults) diff --git a/nautobot_device_onboarding/nornir_plays/formatter.py b/nautobot_device_onboarding/nornir_plays/formatter.py new file mode 100755 index 00000000..c33a6590 --- /dev/null +++ b/nautobot_device_onboarding/nornir_plays/formatter.py @@ -0,0 +1,228 @@ +"""Command Extraction and Formatting or SSoT Based Jobs.""" + +import json +import logging +from json.decoder import JSONDecodeError + +from django.template import engines +from django.utils.module_loading import import_string +from jdiff import extract_data_from_json +from jinja2.sandbox import SandboxedEnvironment + + +def setup_logger(logger_name, debug_on): + """Creates a logger for the ETL process.""" + logger = logging.getLogger(logger_name) + if debug_on: + logger.setLevel(logging.DEBUG) + else: + logger.setLevel(logging.INFO) + return logger + + +def get_django_env(): + """Load Django Jinja filters from the Django jinja template engine, and add them to the jinja_env. + + Returns: + SandboxedEnvironment + """ + # Use a custom Jinja2 environment instead of Django's to avoid HTML escaping + j2_env = { + "undefined": "jinja2.StrictUndefined", + "trim_blocks": True, + "lstrip_blocks": False, + } + if isinstance(j2_env["undefined"], str): + j2_env["undefined"] = import_string(j2_env["undefined"]) + jinja_env = SandboxedEnvironment(**j2_env) + jinja_env.filters = engines["jinja"].env.filters + return jinja_env + + +def process_empty_result(iterable_type): + """Helper to map iterable_type on an empty result.""" + iterable_mapping = { + "dict": {}, + "str": "", + } + return iterable_mapping.get(iterable_type, []) + + +def normalize_processed_data(processed_data, iterable_type): + """Helper to normalize the processed data returned from jdiff/jmespath.""" + # If processed_data is an empty data structure, return default based on iterable_type + if not processed_data: + return process_empty_result(iterable_type) + if isinstance(processed_data, str) and not processed_data.isdigit(): + try: + # If processed_data is a json string try to load it into a python datatype. + post_processed_data = json.loads(processed_data) + except (JSONDecodeError, TypeError): + post_processed_data = processed_data + else: + post_processed_data = processed_data + if isinstance(post_processed_data, list) and len(post_processed_data) == 1: + if isinstance(post_processed_data[0], str): + post_processed_data = post_processed_data[0] + else: + if isinstance(post_processed_data[0], dict): + if iterable_type: + if iterable_type == "dict": + post_processed_data = post_processed_data[0] + else: + post_processed_data = post_processed_data[0] + if not post_processed_data and iterable_type in ["str", "dict"]: + return process_empty_result(iterable_type) + if iterable_type == "int": + return int(post_processed_data) + if iterable_type == "str": + return str(post_processed_data) + return post_processed_data + + +def extract_and_post_process(parsed_command_output, yaml_command_element, j2_data_context, iter_type, job_debug): + """Helper to extract and apply post_processing on a single element.""" + logger = logger = setup_logger("DEVICE_ONBOARDING_ETL_LOGGER", job_debug) + # if parsed_command_output is an empty data structure, no need to go through all the processing. + if not parsed_command_output: + return parsed_command_output, normalize_processed_data(parsed_command_output, iter_type) + j2_env = get_django_env() + # This just renders the jpath itself if any interpolation is needed. + jpath_template = j2_env.from_string(yaml_command_element["jpath"]) + j2_rendered_jpath = jpath_template.render(**j2_data_context) + logger.debug("Post Rendered Jpath: %s", j2_rendered_jpath) + try: + if isinstance(parsed_command_output, str): + try: + parsed_command_output = json.loads(parsed_command_output) + except (JSONDecodeError, TypeError): + logger.debug("Parsed Command Output is a string but not jsonable: %s", parsed_command_output) + extracted_value = extract_data_from_json(parsed_command_output, j2_rendered_jpath) + except TypeError as err: + logger.debug("Error occurred during extraction: %s setting default extracted value to []", err) + extracted_value = [] + pre_processed_extracted = extracted_value + if yaml_command_element.get("post_processor"): + # j2 context data changes obj(hostname) -> extracted_value for post_processor + j2_data_context["obj"] = extracted_value + template = j2_env.from_string(yaml_command_element["post_processor"]) + extracted_processed = template.render(**j2_data_context) + else: + extracted_processed = extracted_value + post_processed_data = normalize_processed_data(extracted_processed, iter_type) + logger.debug("Pre Processed Extracted: %s", pre_processed_extracted) + logger.debug("Post Processed Data: %s", post_processed_data) + return pre_processed_extracted, post_processed_data + + +def perform_data_extraction(host, command_info_dict, command_outputs_dict, job_debug): + """Extract, process data.""" + result_dict = {} + sync_vlans = host.defaults.data.get("sync_vlans", False) + sync_vrfs = host.defaults.data.get("sync_vrfs", False) + sync_cables = host.defaults.data.get("sync_cables", False) + get_context_from_pre_processor = {} + if command_info_dict.get("pre_processor"): + for pre_processor_name, field_data in command_info_dict["pre_processor"].items(): + if pre_processor_name == "vlan_map" and not sync_vlans: + continue + if isinstance(field_data["commands"], dict): + # only one command is specified as a dict force it to a list. + loop_commands = [field_data["commands"]] + else: + loop_commands = field_data["commands"] + for show_command_dict in loop_commands: + final_iterable_type = show_command_dict.get("iterable_type") + _, current_field_post = extract_and_post_process( + command_outputs_dict[show_command_dict["command"]], + show_command_dict, + {"obj": host.name, "original_host": host.name}, + final_iterable_type, + job_debug, + ) + get_context_from_pre_processor[pre_processor_name] = current_field_post + for ssot_field, field_data in command_info_dict.items(): + if not sync_vlans and ssot_field in ["interfaces__tagged_vlans", "interfaces__untagged_vlan"]: + continue + # If syncing vrfs isn't inscope remove the unneeded commands. + if not sync_vrfs and ssot_field == "interfaces__vrf": + continue + if not sync_cables and ssot_field == "cables": + continue + if ssot_field == "pre_processor": + continue + if isinstance(field_data["commands"], dict): + # only one command is specified as a dict force it to a list. + loop_commands = [field_data["commands"]] + else: + loop_commands = field_data["commands"] + for show_command_dict in loop_commands: + final_iterable_type = show_command_dict.get("iterable_type") + if field_data.get("root_key"): + original_context = {"obj": host.name, "original_host": host.name} + merged_context = {**original_context, **get_context_from_pre_processor} + root_key_pre, root_key_post = extract_and_post_process( + command_outputs_dict[show_command_dict["command"]], + show_command_dict, + merged_context, + final_iterable_type, + job_debug, + ) + result_dict[ssot_field] = root_key_post + else: + field_nesting = ssot_field.split("__") + # for current_nesting in field_nesting: + if len(field_nesting) > 1: + # Means there is "anticipated" data nesting `interfaces__mtu` means final data would be + # {"Ethernet1/1": {"mtu": }} + for current_key in root_key_pre: + # current_key is a single iteration from the root_key extracted value. Typically we want this to be + # a list of data that we want to become our nested key. E.g. current_key "Ethernet1/1" + # These get passed into the render context for the template render to allow nested jpaths to use + # the current_key context for more flexible jpath queries. + original_context = {"current_key": current_key, "obj": host.name, "original_host": host.name} + merged_context = {**original_context, **get_context_from_pre_processor} + _, current_key_post = extract_and_post_process( + command_outputs_dict[show_command_dict["command"]], + show_command_dict, + merged_context, + final_iterable_type, + job_debug, + ) + result_dict[field_nesting[0]][current_key][field_nesting[1]] = current_key_post + else: + original_context = {"obj": host.name, "original_host": host.name} + merged_context = {**original_context, **get_context_from_pre_processor} + _, current_field_post = extract_and_post_process( + command_outputs_dict[show_command_dict["command"]], + show_command_dict, + merged_context, + final_iterable_type, + job_debug, + ) + result_dict[ssot_field] = current_field_post + # if command_info_dict.get("validator_pattern"): + # # temp validator + # if command_info_dict["validator_pattern"] == "not None": + # if not extracted_processed: + # logger.debug("validator pattern not detected, checking next command.") + # continue + # else: + # logger.debug("About to break the sequence due to valid pattern found") + # result_dict[dict_field] = extracted_processed + # break + return result_dict + + +def extract_show_data(host, command_outputs, command_getter_type, job_debug): + """Take a result of show command and extra specific needed data. + + Args: + host (host): host from task + command_outputs (dict): dictionary of results from command getter. + command_getter_type (str): to know what dict to pull, sync_devices or sync_network_data. + job_debug (logging.INFO or logging.DEBUG): to know if debug button was checked. + """ + command_getter_iterable = host.data["platform_parsing_info"][command_getter_type] + all_results_extracted = perform_data_extraction(host, command_getter_iterable, command_outputs, job_debug) + return all_results_extracted diff --git a/nautobot_device_onboarding/nornir_plays/inventory_creator.py b/nautobot_device_onboarding/nornir_plays/inventory_creator.py new file mode 100755 index 00000000..7254cf49 --- /dev/null +++ b/nautobot_device_onboarding/nornir_plays/inventory_creator.py @@ -0,0 +1,59 @@ +"""Inventory Creator and Helpers.""" + +from netmiko import SSHDetect +from nornir.core.inventory import ConnectionOptions, Host + + +def guess_netmiko_device_type(hostname, username, password, port): + """Guess the device type of host, based on Netmiko.""" + netmiko_optional_args = {"port": port} + guessed_device_type = None + + remote_device = { + "device_type": "autodetect", + "host": hostname, + "username": username, + "password": password, + **netmiko_optional_args, + } + guessed_exc = None + try: + guesser = SSHDetect(**remote_device) + guessed_device_type = guesser.autodetect() + + except Exception as err: # pylint: disable=broad-exception-caught + guessed_device_type = None + guessed_exc = err + # Additional checking is done later in the process. We shouldn't reraise an error as it causes the job to fail. + return guessed_device_type, guessed_exc + + +def _set_inventory(host_ip, platform, port, username, password): + """Construct Nornir Inventory.""" + inv = {} + if platform: + platform_guess_exc = None + platform = platform.network_driver_mappings.get("netmiko") + else: + platform, platform_guess_exc = guess_netmiko_device_type(host_ip, username, password, port) + host = Host( + name=host_ip, + hostname=host_ip, + port=int(port), + username=username, + password=password, + platform=platform, + connection_options={ + "netmiko": ConnectionOptions( + hostname=host_ip, + port=int(port), + username=username, + password=password, + platform=platform, + ) + }, + ) + if not platform_guess_exc: + inv.update({host_ip: host}) + + return inv, platform_guess_exc diff --git a/nautobot_device_onboarding/nornir_plays/logger.py b/nautobot_device_onboarding/nornir_plays/logger.py new file mode 100755 index 00000000..ffa4b382 --- /dev/null +++ b/nautobot_device_onboarding/nornir_plays/logger.py @@ -0,0 +1,47 @@ +"""Custom logger to support writing to console and db.""" + +import logging +from typing import Any + +LOGGER = logging.getLogger("NORNIR_LOGGER") + +handler = logging.StreamHandler() +handler.setLevel(logging.NOTSET) +LOGGER.addHandler(handler) +LOGGER_ADAPTER = logging.LoggerAdapter(LOGGER, extra={}) + + +class NornirLogger: + """Logger that handles same signature as standard Python Library logging but also write to db.""" + + def __init__(self, job_result, log_level: int): + """Initialize the object.""" + self.job_result = job_result + LOGGER.setLevel(log_level) + + def _logging_helper(self, attr: str, message: str, extra: Any = None): + """Logger helper to set both db and console logs at once.""" + if not extra: + extra = {} + getattr(LOGGER_ADAPTER, attr)(message, extra=extra) + self.job_result.log(message, level_choice=attr) + + def debug(self, message: str, extra: Any = None): + """Match standard Python Library debug signature.""" + self._logging_helper("debug", message, extra) + + def info(self, message: str, extra: Any = None): + """Match standard Python Library info signature.""" + self._logging_helper("info", message, extra) + + def warning(self, message: str, extra: Any = None): + """Match standard Python Library warning signature.""" + self._logging_helper("warning", message, extra) + + def error(self, message: str, extra: Any = None): + """Match standard Python Library error signature.""" + self._logging_helper("error", message, extra) + + def critical(self, message: str, extra: Any = None): + """Match standard Python Library critical signature.""" + self._logging_helper("critical", message, extra) diff --git a/nautobot_device_onboarding/nornir_plays/processor.py b/nautobot_device_onboarding/nornir_plays/processor.py new file mode 100755 index 00000000..0c3bb34b --- /dev/null +++ b/nautobot_device_onboarding/nornir_plays/processor.py @@ -0,0 +1,117 @@ +"""Processor used by Nornir command getter tasks to prep data for SSoT framework sync and to catch unknown errors.""" + +from typing import Dict + +from jsonschema import ValidationError, validate +from nornir.core.inventory import Host +from nornir.core.task import MultiResult, Task +from nornir_nautobot.plugins.processors import BaseLoggingProcessor + +from nautobot_device_onboarding.nornir_plays.formatter import extract_show_data +from nautobot_device_onboarding.nornir_plays.schemas import NETWORK_DATA_SCHEMA, NETWORK_DEVICES_SCHEMA + + +class CommandGetterProcessor(BaseLoggingProcessor): + """Processor class for Command Getter Nornir Tasks.""" + + def __init__(self, logger, command_outputs, kwargs): + """Set logging facility.""" + self.logger = logger + self.data: Dict = command_outputs + self.kwargs = kwargs + + def task_instance_started(self, task: Task, host: Host) -> None: + """Processor for logging and data processing on task start.""" + if not self.data.get(host.name): + self.data[host.name] = { + "platform": host.platform, + "manufacturer": host.platform.split("_")[0].title() if host.platform else "PLACEHOLDER", + "network_driver": host.platform, + } + + def task_instance_completed(self, task: Task, host: Host, result: MultiResult) -> None: + """Processor for logging and data processing on task completed. + + Args: + task (Task): Nornir task individual object + host (Host): Host object with Nornir + result (MultiResult): Result from Nornir task + + Returns: + None + """ + parsed_command_outputs = {} + self.logger.info( + f"Task instance completed. Task Name: {task.name}", + extra={"object": task.host}, + ) + # If any main task resulted in a failed:True then add that key so ssot side can ignore that entry. + if result[0].failed: + if task.params["command_getter_job"] == "sync_devices": + self.logger.info( + f"{host.name} has no platform set. Removing it from the sync process.", + extra={"object": host.name}, + ) + del self.data[host.name] + else: + self.data[host.name].update({"failed": True}) + # [1:] because result 1 is the (network_send_commands ) task which runs all the subtask, it has no result. + for res in result[1:]: + parsed_command_outputs[res.name] = res.result + + ready_for_ssot_data = extract_show_data( + host, parsed_command_outputs, task.params["command_getter_job"], self.kwargs["debug"] + ) + if task.params["command_getter_job"] == "sync_devices": + try: + validate(ready_for_ssot_data, NETWORK_DEVICES_SCHEMA) + except ValidationError as e: + if self.kwargs["debug"]: + self.logger.debug(f"Schema validation failed for {host.name}. Error: {e}.") + self.data[host.name] = {"failed": True, "failed_reason": "Schema validation failed."} + else: + if self.kwargs["debug"]: + self.logger.debug(f"Ready for ssot data: {host.name} {ready_for_ssot_data}") + self.data[host.name].update(ready_for_ssot_data) + elif task.params["command_getter_job"] == "sync_network_data": + try: + validate(ready_for_ssot_data, NETWORK_DATA_SCHEMA) + except ValidationError as err: + if self.kwargs["debug"]: + self.logger.debug(f"Schema validation failed for {host.name} Error: {err}") + self.data[host.name] = {"failed": True, "failed_reason": "Schema validation failed."} + else: + if self.kwargs["debug"]: + self.logger.debug(f"Ready for ssot data: {host.name} {ready_for_ssot_data}") + self.data[host.name].update(ready_for_ssot_data) + + def subtask_instance_completed(self, task: Task, host: Host, result: MultiResult) -> None: + """Processor for logging and data processing on subtask completed.""" + self.logger.info(f"Subtask completed: {task.name}, {task.host}.", extra={"object": task.host}) + + def subtask_instance_started(self, task: Task, host: Host) -> None: # show command start + """Processor for logging and data processing on subtask start.""" + self.logger.info(f"Subtask starting: {task.name}, {task.host}.", extra={"object": task.host}) + + +class TroubleshootingProcessor(BaseLoggingProcessor): + """Processor class for to troubleshot command getter.""" + + def __init__(self, command_outputs): + """Set logging facility.""" + self.data: Dict = command_outputs + + def task_instance_completed(self, task: Task, host: Host, result: MultiResult) -> None: + """Processor for logging and data processing on task completed. + + Args: + task (Task): Nornir task individual object + host (Host): Host object with Nornir + result (MultiResult): Result from Nornir task + + Returns: + None + """ + # [1:] because result 1 is the (network_send_commands ) task which runs all the subtask, it has no result. + for res in result[1:]: + self.data[res.name] = res.result diff --git a/nautobot_device_onboarding/nornir_plays/schemas.py b/nautobot_device_onboarding/nornir_plays/schemas.py new file mode 100755 index 00000000..b9cb40e9 --- /dev/null +++ b/nautobot_device_onboarding/nornir_plays/schemas.py @@ -0,0 +1,220 @@ +"""General Schemas and JSONSchemas for SSoT Based Sync Jobs.""" + + +def sync_devices_schema(json_schema=True): + """Schema for SSOTSyncDevices Job.""" + if json_schema: + return { + "title": "Sync Devices From Network", + "description": "Schema for SSoT Sync Devices From Network", + "type": "object", + "required": ["hostname", "serial", "device_type", "mgmt_interface", "platform", "network_driver"], + "properties": { + "hostname": {"type": "string", "description": "Hostname of the network device"}, + "serial": {"type": ["string", "integer"], "description": "Serial number of the network device"}, + "device_type": {"type": ["string", "integer"], "description": "Type of the network device"}, + "mgmt_interface": {"type": "string", "description": "Management interface of the network device"}, + "mask_length": { + "type": "integer", + "default": 31, + "description": "Subnet mask length for the management interface (default: 31)", + }, + "platform": {"type": "string", "description": "Platform of the network device"}, + "manufacturer": { + "type": "string", + "default": "PLACEHOLDER", + "description": "Manufacturer of the network device (default: PLACEHOLDER)", + }, + "network_driver": {"type": "string", "description": "Network driver used for the device"}, + }, + } + return { + "hostname": "", + "serial": "", + "device_type": "", + "mgmt_interface": "", + "mask_length": 31, + "platform": "", + "manufacturer": "PLACEHOLDER", + "network_driver": "", + } + + +def sync_network_data_schema(json_schema=True): + """Schema for SSoT SSOTSyncNetworkData.""" + if json_schema: + return { + "title": "Sync Network Data From Network", + "description": "Schema for SSoT Sync Network Data From Network", + "type": "object", + "required": ["type", "ip_addresses", "mac_address", "link_status", "802.1Q_mode"], + "properties": { + "type": {"type": "string", "description": "Type of the network interface"}, + "ip_addresses": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": ["ip_address", "prefix_length"], + "properties": { + "ip_address": {"type": "string", "description": "IP address of the interface"}, + "prefix_length": {"type": "integer", "description": "Prefix length of the IP address"}, + }, + }, + "description": "List of IP addresses associated with the interface", + }, + "mac_address": {"type": "string", "description": "MAC address of the interface"}, + "mtu": {"type": "string", "description": "MTU of the interface"}, + "description": {"type": "string", "description": "Description of the interface"}, + "link_status": {"type": "boolean", "description": "Link status of the interface (up or down)"}, + "802.1Q_mode": {"type": "string", "description": "802.1Q mode of the interface (access, trunk, etc.)"}, + "lag": { + "type": "string", + "description": "LAG (Link Aggregation Group) the interface belongs to (optional)", + }, + "untagged_vlan": {"type": "object", "description": "Untagged VLAN information (optional)"}, + "tagged_vlans": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "id"], + "properties": { + "name": {"type": "string", "description": "Name of the tagged VLAN"}, + "id": {"type": "string", "description": "ID of the tagged VLAN"}, + }, + }, + "description": "List of tagged VLANs associated with the interface (optional)", + }, + "cables": { + "type": "array", + "items": { + "type": "object", + "required": ["local_interface", "remote_interface", "remote_device"], + "properties": { + "local_interface": {"type": "string", "description": "Interface Name of the local device"}, + "remote_interface": { + "type": "string", + "description": "Interface Name of the remote device", + }, + "remote_device": {"type": "string", "description": "Name of the remote device"}, + }, + }, + }, + }, + } + return { + "type": "str", + "ip_addresses": [ + {"ip_address": "str", "prefix_length": "int"}, + {"ip_address": "str", "prefix_length": "int"}, + ], + "mac_address": "str", + "mtu": "str", + "description": "str", + "link_status": "bool", + "802.1Q_mode": "str", + "lag": "str", + "untagged_vlan": "dict", + "tagged_vlans": [{"name": "str", "id": "str"}, {"name": "str", "id": "str"}], + "vrf": {"name": "str", "rd": "str"}, + } + + +NETWORK_DEVICES_SCHEMA = { + "title": "Sync Device Data From Network", + "description": "Schema for SSoT Sync Device Data From Network", + "type": "object", + "required": ["serial", "hostname", "device_type", "mgmt_interface", "mask_length"], + "properties": { + "serial": { + "type": ["string", "integer"], + "description": "Serial number of the network device", + "minItems": 1, + }, + "hostname": {"type": "string"}, + "device_type": {"type": ["string", "integer"]}, + "mgmt_interface": {"type": "string"}, + "mask_length": {"type": "integer"}, + }, +} + +NETWORK_DATA_SCHEMA = { + "title": "Sync Network Data From Network", + "description": "Schema for SSoT Sync Network Data From Network", + "type": "object", + "required": ["serial", "interfaces"], + "properties": { + "serial": { + "type": ["string", "integer"], + "description": "Serial number of the network device", + "minItems": 1, + }, + "interfaces": { + "type": "object", + "items": { + "type": "object", + "required": [ + "type", + "ip_addresses", + "mac_address", + "mtu", + "description" "link_status", + "802.1Q_mode", + ], + "properties": { + "type": {"type": "string", "description": "Type of the network interface"}, + "mac_address": {"type": "string", "description": "MAC address of the interface"}, + "mtu": {"type": "string", "description": "MTU of the interface"}, + "description": {"type": "string", "description": "Description of the interface"}, + "link_status": {"type": "boolean", "description": "Link status of the interface (up or down)"}, + "ip_addresses": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": ["ip_address", "prefix_length"], + "properties": { + "ip_address": {"type": "string", "description": "IP address of the interface"}, + "prefix_length": {"type": "integer", "description": "Prefix length of the IP address"}, + }, + }, + "description": "List of IP addresses associated with the interface", + }, + "802.1Q_mode": { + "type": "string", + "description": "802.1Q mode of the interface (access, trunk, etc.)", + }, + "lag": { + "type": "string", + "description": "LAG (Link Aggregation Group) the interface belongs to (optional)", + }, + "tagged_vlans": { + "type": "array", + "items": { + "type": "object", + "required": ["name", "id"], + "properties": { + "name": {"type": "string", "description": "Name of the tagged VLAN"}, + "id": {"type": "string", "description": "ID of the tagged VLAN"}, + }, + }, + }, + "untagged_vlan": {"type": "object", "description": "Untagged VLAN information (optional)"}, + "vrf": {"type": "object", "properties": {"name": {"type": "string"}, "rd": {"type": "string"}}}, + }, + }, + }, + "cables": { + "type": "array", + "items": { + "type": "object", + "required": ["local_interface", "remote_interface", "remote_device"], + "properties": { + "local_interface": {"type": "string", "description": "Interface Name of the local device"}, + "remote_interface": {"type": "string", "description": "Interface Name of the remote device"}, + "remote_device": {"type": "string", "description": "Name of the remote device"}, + }, + }, + }, + }, +} diff --git a/nautobot_device_onboarding/nornir_plays/transform.py b/nautobot_device_onboarding/nornir_plays/transform.py new file mode 100755 index 00000000..ad1d9ef1 --- /dev/null +++ b/nautobot_device_onboarding/nornir_plays/transform.py @@ -0,0 +1,39 @@ +"""Adds command mapper, platform parsing info.""" + +import os + +import yaml +from nautobot.extras.models import GitRepository + +DATA_DIR = os.path.abspath(os.path.join(os.path.dirname(os.path.dirname(__file__)), "command_mappers")) + + +def add_platform_parsing_info(): + """Merges platform command mapper from repo or defaults.""" + if ( + GitRepository.objects.filter( + provided_contents=["nautobot_device_onboarding.onboarding_command_mappers"] + ).count() + == 1 + ): + repository_record = GitRepository.objects.filter( + provided_contents=["nautobot_device_onboarding.onboarding_command_mappers"] + ).first() + repo_data_dir = os.path.join(repository_record.filesystem_path, "onboarding_command_mappers") + command_mappers_repo_path = load_command_mappers_from_dir(repo_data_dir) + else: + command_mappers_repo_path = {} + command_mapper_defaults = load_command_mappers_from_dir(DATA_DIR) + merged_command_mappers = {**command_mapper_defaults, **command_mappers_repo_path} + return merged_command_mappers + + +def load_command_mappers_from_dir(command_mappers_path): + """Helper to load all yaml files in directory and return merged dictionary.""" + command_mappers_result = {} + for filename in os.listdir(command_mappers_path): + with open(os.path.join(command_mappers_path, filename), encoding="utf-8") as fd: + network_driver = filename.split(".")[0] + command_mappers_data = yaml.safe_load(fd) + command_mappers_result[network_driver] = command_mappers_data + return command_mappers_result diff --git a/nautobot_device_onboarding/onboarding/onboarding.py b/nautobot_device_onboarding/onboarding/onboarding.py index bd67d96b..1c06a233 100644 --- a/nautobot_device_onboarding/onboarding/onboarding.py +++ b/nautobot_device_onboarding/onboarding/onboarding.py @@ -3,7 +3,7 @@ from nautobot_device_onboarding.nautobot_keeper import NautobotKeeper -class Onboarding: # pylint: disable=too-few-public-methods +class Onboarding: """Generic onboarding class.""" def __init__(self): @@ -16,7 +16,7 @@ def run(self, onboarding_kwargs): raise NotImplementedError -class StandaloneOnboarding(Onboarding): # pylint: disable=too-few-public-methods +class StandaloneOnboarding(Onboarding): """Standalone onboarding class.""" def run(self, onboarding_kwargs): diff --git a/nautobot_device_onboarding/tests/__init__.py b/nautobot_device_onboarding/tests/__init__.py index e43da1b9..bebe7e36 100644 --- a/nautobot_device_onboarding/tests/__init__.py +++ b/nautobot_device_onboarding/tests/__init__.py @@ -1 +1 @@ -"""Unit tests for nautobot_device_onboarding plugin.""" +"""Unit tests for nautobot_device_onboarding app.""" diff --git a/nautobot_device_onboarding/tests/fixtures/onboarding_csv_fixture.csv b/nautobot_device_onboarding/tests/fixtures/onboarding_csv_fixture.csv new file mode 100644 index 00000000..80ebf507 --- /dev/null +++ b/nautobot_device_onboarding/tests/fixtures/onboarding_csv_fixture.csv @@ -0,0 +1,4 @@ +ip_address_host,location_parent_name,location_name,namespace,port,timeout,set_mgmt_only,update_devices_without_primary_ip,device_role_name,device_status_name,interface_status_name,ip_address_status_name,secrets_group_name,platform_name +10.1.1.10,Site A Parent,Site A,Global,22,30,TRUE,TRUE,Network,Active,Active,Active,test secrets group,cisco_ios +10.1.1.11,Site B Parent,Site B,Global,22,30,FALSE,FALSE,Network,Active,Active,Active,test secrets group,cisco_ios +10.1.1.12,,Site A Parent,Global,22,30,FALSE,FALSE,Network,Active,Active,Active,test secrets group,cisco_ios diff --git a/nautobot_device_onboarding/tests/fixtures/onboarding_csv_fixture_bad_data.csv b/nautobot_device_onboarding/tests/fixtures/onboarding_csv_fixture_bad_data.csv new file mode 100644 index 00000000..71eac735 --- /dev/null +++ b/nautobot_device_onboarding/tests/fixtures/onboarding_csv_fixture_bad_data.csv @@ -0,0 +1,10 @@ +ip_address_host,location_parent_name,location_name,namespace,port,timeout,set_mgmt_only,update_devices_without_primary_ip,device_role_name,device_status_name,interface_status_name,ip_address_status_name,secrets_group_name,platform_name +10.1.1.10,Site C Parent,Site A,Global,22,30,TRUE,TRUE,Network,Active,Active,Active,test secrets group,cisco_ios +10.1.1.11,Site A Parent,Site C,Global,22,30,TRUE,TRUE,Network,Active,Active,Active,test secrets group,cisco_ios +10.1.1.12,Site A Parent,Site A,BadNamespace,22,30,TRUE,TRUE,Network,Active,Active,Active,test secrets group,cisco_ios +10.1.1.13,Site A Parent,Site A,Global,22,30,TRUE,TRUE,BadRole,Active,Active,Active,test secrets group,cisco_ios +10.1.1.14,Site A Parent,Site A,Global,22,30,TRUE,TRUE,Network,BadStatus,Active,Active,test secrets group,cisco_ios +10.1.1.15,Site A Parent,Site A,Global,22,30,TRUE,TRUE,Network,Active,BadStatus,Active,test secrets group,cisco_ios +10.1.1.16,Site A Parent,Site A,Global,22,30,TRUE,TRUE,Network,Active,Active,BadStatus,test secrets group,cisco_ios +10.1.1.17,Site A Parent,Site A,Global,22,30,TRUE,TRUE,Network,Active,Active,Active,BadSecretsGroup,cisco_ios +10.1.1.18,Site A Parent,Site A,Global,22,30,TRUE,TRUE,Network,Active,Active,Active,test secrets group,BadPlatform \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/fixtures/onboarding_csv_fixture_empty.csv b/nautobot_device_onboarding/tests/fixtures/onboarding_csv_fixture_empty.csv new file mode 100644 index 00000000..e69de29b diff --git a/nautobot_device_onboarding/tests/fixtures/sync_devices_fixture.py b/nautobot_device_onboarding/tests/fixtures/sync_devices_fixture.py new file mode 100644 index 00000000..1c397754 --- /dev/null +++ b/nautobot_device_onboarding/tests/fixtures/sync_devices_fixture.py @@ -0,0 +1,85 @@ +"""Data fixture for use in testing.""" + +sync_devices_mock_data_single_device_valid = { + "10.1.1.10": { + "hostname": "test device 1", + "serial": "test-serial-abc", + "device_type": "CSR1000V17", + "mgmt_interface": "GigabitEthernet1", + "manufacturer": "Cisco", + "platform": "cisco_nxos", + "network_driver": "cisco_nxos", + "mask_length": 24, + }, +} +sync_devices_mock_data_single_device_alternate_valid = { + "192.1.1.10": { + "hostname": "test device 1", + "serial": "test-serial-abc", + "device_type": "CSR1000V17", + "mgmt_interface": "NewInterfaceName", + "manufacturer": "Cisco", + "platform": "cisco_nxos", + "network_driver": "cisco_nxos", + "mask_length": 24, + }, +} + +sync_devices_mock_data_valid = { + "10.1.1.10": { + "hostname": "demo-cisco-1", + "serial": "9ABUXU5882222", + "device_type": "CSR1000V2", + "mgmt_interface": "GigabitEthernet1", + "manufacturer": "Cisco", + "platform": "cisco_ios", + "network_driver": "cisco_ios", + "mask_length": 24, + }, + "10.1.1.11": { + "hostname": "demo-cisco-2", + "serial": "9ABUXU581111", + "device_type": "CSR1000V17", + "mgmt_interface": "GigabitEthernet1", + "manufacturer": "Cisco", + "platform": "cisco_ios", + "network_driver": "cisco_ios", + "mask_length": 16, + }, +} + +sync_devices_mock_data_invalid = { + "10.1.1.10": { + "hostname": "demo-cisco-1", + "serial": "", + "device_type": "CSR1000V2", + "mgmt_interface": "GigabitEthernet1", + "manufacturer": "Cisco", + "platform": "cisco_ios", + "network_driver": "cisco_ios", + "mask_length": 24, + }, + "10.1.1.11": { + "hostname": "demo-cisco-2", + "serial": "9ABUXU581111", + "device_type": "CSR1000V17", + "mgmt_interface": "GigabitEthernet1", + "manufacturer": "Cisco", + "platform": "cisco_xe", + "network_driver": "cisco_xe", + "mask_length": 16, + }, +} + +sync_devices_data_update = { + "10.1.1.10": { + "hostname": "test device 1", + "serial": "9ABUXU5882222", + "device_type": "Test model 2", + "mgmt_interface": "NewInterfaceName", + "manufacturer": "Cisco", + "platform": "cisco_xe", + "network_driver": "cisco_xe", + "mask_length": 24, + }, +} diff --git a/nautobot_device_onboarding/tests/fixtures/sync_network_data_fixture.py b/nautobot_device_onboarding/tests/fixtures/sync_network_data_fixture.py new file mode 100644 index 00000000..624a42a6 --- /dev/null +++ b/nautobot_device_onboarding/tests/fixtures/sync_network_data_fixture.py @@ -0,0 +1,195 @@ +"""Data fixture for use in testing.""" + +sync_network_mock_data_valid = { + "demo-cisco-1": { + "serial": "9ABUXU581111", + "interfaces": { + "GigabitEthernet1": { + "type": "100base-tx", + "ip_addresses": [ + {"ip_address": "10.1.1.10", "prefix_length": 16}, + ], + "mac_address": "d8b1.905c.7130", + "mtu": "1500", + "description": "", + "link_status": True, + "802.1Q_mode": "tagged", + "lag": "", + "untagged_vlan": {"name": "vlan60", "id": "60"}, + "tagged_vlans": [{"name": "vlan40", "id": "40"}], + "vrf": {"name": "vrf1"}, + }, + "GigabitEthernet2": { + "type": "100base-tx", + "ip_addresses": [ + {"ip_address": "10.1.1.1", "prefix_length": 24}, + ], + "mac_address": "d8b1.905c.7131", + "mtu": "1500", + "description": "uplink Po1", + "link_status": True, + "802.1Q_mode": "", + "lag": "Po2", + "untagged_vlan": {}, + "tagged_vlans": [], + "vrf": {}, + }, + "GigabitEthernet3": { + "type": "100base-tx", + "ip_addresses": [ + {"ip_address": "10.1.1.2", "prefix_length": 24}, + {"ip_address": "10.1.1.3", "prefix_length": 22}, + ], + "mac_address": "d8b1.905c.7132", + "mtu": "1500", + "description": "", + "link_status": True, + "802.1Q_mode": "tagged", + "lag": "Po1", + "untagged_vlan": {}, + "tagged_vlans": [{"name": "vlan40", "id": "40"}, {"name": "vlan50", "id": "50"}], + "vrf": {"name": "mgmt"}, + }, + "GigabitEthernet4": { + "type": "100base-tx", + "ip_addresses": [ + {"ip_address": "10.1.1.4", "prefix_length": 20}, + ], + "mac_address": "d8b1.905c.7133", + "mtu": "1500", + "description": "", + "link_status": True, + "802.1Q_mode": "", + "lag": "", + "untagged_vlan": {}, + "tagged_vlans": [], + "vrf": {}, + }, + "Po1": { + "type": "lag", + "ip_addresses": [], + "mac_address": "d8b1.905c.7134", + "mtu": "1500", + "description": "", + "link_status": True, + "802.1Q_mode": "", + "lag": "", + "untagged_vlan": {}, + "tagged_vlans": [], + "vrf": {"name": "mgmt"}, + }, + "Po2": { + "type": "lag", + "ip_addresses": [], + "mac_address": "d8b1.905c.7135", + "mtu": "1500", + "description": "", + "link_status": True, + "802.1Q_mode": "", + "lag": "", + "untagged_vlan": "", + "tagged_vlans": [], + "vrf": {"name": "mgmt"}, + }, + }, + "cables": [ + { + "remote_device": "demo-cisco-2", + "local_interface": "GigabitEthernet1", + "remote_interface": "GigabitEthernet1", + }, + { + "remote_device": "demo-cisco-3", + "local_interface": "GigabitEthernet2", + "remote_interface": "GigabitEthernet2", + }, + { + "remote_device": "demo-cisco-4", + "local_interface": "GigabitEthernet3", + "remote_interface": "GigabitEthernet3", + }, + ], + }, + "demo-cisco-2": { + "serial": "9ABUXU5882222", + "interfaces": { + "GigabitEthernet1": { + "type": "100base-tx", + "ip_addresses": [ + {"ip_address": "10.1.1.11", "prefix_length": 24}, + ], + "mac_address": "d8b1.905c.5170", + "mtu": "1500", + "description": "", + "link_status": True, + "802.1Q_mode": "tagged", + "lag": "", + "untagged_vlan": {"name": "vlan60", "id": "60"}, + "tagged_vlans": [{"name": "vlan40", "id": "40"}], + "vrf": {"name": "mgmt"}, + }, + "GigabitEthernet2": { + "type": "100base-tx", + "ip_addresses": [ + {"ip_address": "10.1.1.12", "prefix_length": 24}, + ], + "mac_address": "d8b1.905c.5171", + "mtu": "1500", + "description": "uplink Po1", + "link_status": True, + "802.1Q_mode": "", + "lag": "Po1", + "untagged_vlan": {}, + "tagged_vlans": [], + "vrf": {}, + }, + "GigabitEthernet3": { + "type": "100base-tx", + "ip_addresses": [ + {"ip_address": "10.1.1.13", "prefix_length": 24}, + {"ip_address": "10.1.1.14", "prefix_length": 22}, + ], + "mac_address": "d8b1.905c.5172", + "mtu": "1500", + "description": "", + "link_status": True, + "802.1Q_mode": "tagged", + "lag": "Po1", + "untagged_vlan": {}, + "tagged_vlans": [{"name": "vlan40", "id": "40"}, {"name": "vlan50", "id": "50"}], + "vrf": {"name": "mgmt"}, + }, + "Po1": { + "type": "lag", + "ip_addresses": [], + "mac_address": "d8b1.905c.5173", + "mtu": "1500", + "description": "", + "link_status": True, + "802.1Q_mode": "", + "lag": "", + "untagged_vlan": {}, + "tagged_vlans": [], + "vrf": {"name": "mgmt"}, + }, + }, + "cables": [ + { + "remote_device": "demo-cisco-1", + "local_interface": "GigabitEthernet1", + "remote_interface": "GigabitEthernet1", + }, + { + "remote_device": "demo-cisco-3", + "local_interface": "GigabitEthernet2", + "remote_interface": "GigabitEthernet2", + }, + { + "remote_device": "demo-cisco-4", + "local_interface": "GigabitEthernet3", + "remote_interface": "GigabitEthernet3", + }, + ], + }, +} +failed_device = {"demo-cisco-3": {"failed": True, "failed_reason": "Authentication failure"}} diff --git a/nautobot_device_onboarding/tests/mock/arista_eos/command_getter_result_1.json b/nautobot_device_onboarding/tests/mock/arista_eos/command_getter_result_1.json new file mode 100755 index 00000000..91a7c8ca --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/arista_eos/command_getter_result_1.json @@ -0,0 +1,669 @@ +{ + "show hostname": [ + { + "fqdn": "veos-0", + "hostname": "veos-0" + } + ], + "show ip interface | json": { + "interfaces": { + "Ethernet1": { + "name": "Ethernet1", + "lineProtocolStatus": "down", + "interfaceStatus": "disabled", + "mtu": "1500", + "interfaceAddressBrief": { + "ipAddr": { + "address": "1.1.1.1", + "maskLen": 24 + } + }, + "ipv4Routable240": false, + "ipv4Routable0": false, + "enabled": false, + "description": "", + "interfaceAddress": { + "primaryIp": { + "address": "1.1.1.1", + "maskLen": 24 + }, + "secondaryIps": {}, + "secondaryIpsOrderedList": [], + "virtualIp": { + "address": "0.0.0.0", + "maskLen": 0 + }, + "virtualSecondaryIps": {}, + "virtualSecondaryIpsOrderedList": [], + "broadcastAddress": "255.255.255.255", + "dhcp": false + }, + "proxyArp": false, + "proxyArpAllowDefault": false, + "localProxyArp": false, + "gratuitousArp": false, + "routedAddr": "52:54:00:91:1e:bf", + "isVrrpBackup": false, + "vrf": "default", + "urpf": "disable", + "addresslessForwarding": "isInvalid", + "directedBroadcastEnabled": false, + "maxMssIngress": 0, + "maxMssEgress": 0 + }, + "Ethernet4": { + "name": "Ethernet4", + "lineProtocolStatus": "up", + "interfaceStatus": "connected", + "mtu": "1500", + "interfaceAddressBrief": { + "ipAddr": { + "address": "0.0.0.0", + "maskLen": 0 + } + }, + "ipv4Routable240": false, + "ipv4Routable0": false, + "enabled": true, + "description": "", + "interfaceAddress": { + "primaryIp": { + "address": "0.0.0.0", + "maskLen": 0 + }, + "secondaryIps": {}, + "secondaryIpsOrderedList": [], + "virtualIp": { + "address": "0.0.0.0", + "maskLen": 0 + }, + "virtualSecondaryIps": {}, + "virtualSecondaryIpsOrderedList": [], + "broadcastAddress": "255.255.255.255", + "dhcp": false + }, + "proxyArp": false, + "proxyArpAllowDefault": false, + "localProxyArp": false, + "gratuitousArp": false, + "routedAddr": "52:54:00:91:1e:bf", + "isVrrpBackup": false, + "vrf": "jeff", + "urpf": "disable", + "addresslessForwarding": "isInvalid", + "directedBroadcastEnabled": false, + "maxMssIngress": 0, + "maxMssEgress": 0 + }, + "Management1": { + "name": "Management1", + "lineProtocolStatus": "up", + "interfaceStatus": "connected", + "mtu": "1500", + "interfaceAddressBrief": { + "ipAddr": { + "address": "10.1.1.219", + "maskLen": 24 + } + }, + "ipv4Routable240": false, + "ipv4Routable0": false, + "enabled": true, + "description": "", + "interfaceAddress": { + "primaryIp": { + "address": "10.1.1.219", + "maskLen": 24 + }, + "secondaryIps": {}, + "secondaryIpsOrderedList": [], + "virtualIp": { + "address": "0.0.0.0", + "maskLen": 0 + }, + "virtualSecondaryIps": {}, + "virtualSecondaryIpsOrderedList": [], + "broadcastAddress": "255.255.255.255", + "dhcp": true + }, + "proxyArp": false, + "proxyArpAllowDefault": false, + "localProxyArp": false, + "gratuitousArp": false, + "routedAddr": "52:54:00:0d:29:5c", + "isVrrpBackup": false, + "vrf": "default", + "urpf": "disable", + "addresslessForwarding": "isInvalid", + "directedBroadcastEnabled": false, + "maxMssIngress": 0, + "maxMssEgress": 0 + } + } + }, + "show interfaces | json": { + "interfaces": { + "Ethernet1": { + "autoNegotiate": "off", + "bandwidth": 1000000000, + "description": "", + "duplex": "duplexFull", + "forwardingModel": "routed", + "hardware": "ethernet", + "interfaceAddress": [ + { + "broadcastAddress": "255.255.255.255", + "dhcp": false, + "primaryIp": { + "address": "1.1.1.1", + "maskLen": 24 + }, + "secondaryIps": {}, + "secondaryIpsOrderedList": [], + "virtualIp": { + "address": "0.0.0.0", + "maskLen": 0 + }, + "virtualSecondaryIps": {}, + "virtualSecondaryIpsOrderedList": [] + } + ], + "interfaceCounters": { + "counterRefreshTime": 1716995214.3773513, + "inBroadcastPkts": 0, + "inDiscards": 0, + "inMulticastPkts": 0, + "inOctets": 0, + "inTotalPkts": 0, + "inUcastPkts": 0, + "inputErrorsDetail": { + "alignmentErrors": 0, + "fcsErrors": 0, + "giantFrames": 0, + "runtFrames": 0, + "rxPause": 0, + "symbolErrors": 0 + }, + "linkStatusChanges": 1, + "outBroadcastPkts": 0, + "outDiscards": 0, + "outMulticastPkts": 0, + "outOctets": 0, + "outTotalPkts": 0, + "outUcastPkts": 0, + "outputErrorsDetail": { + "collisions": 0, + "deferredTransmissions": 0, + "lateCollisions": 0, + "txPause": 0 + }, + "totalInErrors": 0, + "totalOutErrors": 0 + }, + "interfaceStatistics": { + "inBitsRate": 0.0, + "inPktsRate": 0.0, + "outBitsRate": 0.0, + "outPktsRate": 0.0, + "updateInterval": 300.0 + }, + "interfaceStatus": "disabled", + "l2Mru": 0, + "l3MtuConfigured": false, + "lanes": 0, + "lastStatusChangeTimestamp": 1716994739.7751265, + "lineProtocolStatus": "down", + "loopbackMode": "loopbackNone", + "mtu": "1500", + "name": "Ethernet1", + "physicalAddress": "52:54:00:91:1e:bf" + }, + "Ethernet2": { + "autoNegotiate": "unknown", + "bandwidth": 1000000000, + "burnedInAddress": "52:54:00:15:b8:13", + "description": "", + "duplex": "duplexFull", + "forwardingModel": "bridged", + "hardware": "ethernet", + "interfaceAddress": [], + "interfaceCounters": { + "counterRefreshTime": 1716995214.3757112, + "inBroadcastPkts": 0, + "inDiscards": 0, + "inMulticastPkts": 0, + "inOctets": 0, + "inTotalPkts": 0, + "inUcastPkts": 0, + "inputErrorsDetail": { + "alignmentErrors": 0, + "fcsErrors": 0, + "giantFrames": 0, + "runtFrames": 0, + "rxPause": 0, + "symbolErrors": 0 + }, + "linkStatusChanges": 2, + "outBroadcastPkts": 0, + "outDiscards": 0, + "outMulticastPkts": 253, + "outOctets": 31869, + "outTotalPkts": 253, + "outUcastPkts": 0, + "outputErrorsDetail": { + "collisions": 0, + "deferredTransmissions": 0, + "lateCollisions": 0, + "txPause": 0 + }, + "totalInErrors": 0, + "totalOutErrors": 0 + }, + "interfaceStatistics": { + "inBitsRate": 0.0, + "inPktsRate": 0.0, + "outBitsRate": 423.5559579645169, + "outPktsRate": 0.42083606943385, + "updateInterval": 300.0 + }, + "interfaceStatus": "connected", + "l2Mru": 0, + "l3MtuConfigured": false, + "lanes": 0, + "lastStatusChangeTimestamp": 1716994739.775847, + "lineProtocolStatus": "up", + "loopbackMode": "loopbackNone", + "mtu": "9214", + "name": "Ethernet2", + "physicalAddress": "52:54:00:15:b8:13" + }, + "Ethernet3": { + "autoNegotiate": "unknown", + "bandwidth": 1000000000, + "burnedInAddress": "52:54:00:07:8d:69", + "description": "", + "duplex": "duplexFull", + "forwardingModel": "bridged", + "hardware": "ethernet", + "interfaceAddress": [], + "interfaceCounters": { + "counterRefreshTime": 1716995214.3780155, + "inBroadcastPkts": 0, + "inDiscards": 0, + "inMulticastPkts": 0, + "inOctets": 0, + "inTotalPkts": 0, + "inUcastPkts": 0, + "inputErrorsDetail": { + "alignmentErrors": 0, + "fcsErrors": 0, + "giantFrames": 0, + "runtFrames": 0, + "rxPause": 0, + "symbolErrors": 0 + }, + "linkStatusChanges": 2, + "outBroadcastPkts": 0, + "outDiscards": 0, + "outMulticastPkts": 253, + "outOctets": 31869, + "outTotalPkts": 253, + "outUcastPkts": 0, + "outputErrorsDetail": { + "collisions": 0, + "deferredTransmissions": 0, + "lateCollisions": 0, + "txPause": 0 + }, + "totalInErrors": 0, + "totalOutErrors": 0 + }, + "interfaceStatistics": { + "inBitsRate": 0.0, + "inPktsRate": 0.0, + "outBitsRate": 423.48082583202245, + "outPktsRate": 0.42075971628723047, + "updateInterval": 300.0 + }, + "interfaceStatus": "connected", + "l2Mru": 0, + "l3MtuConfigured": false, + "lanes": 0, + "lastStatusChangeTimestamp": 1716994739.7754223, + "lineProtocolStatus": "up", + "loopbackMode": "loopbackNone", + "mtu": "9214", + "name": "Ethernet3", + "physicalAddress": "52:54:00:07:8d:69" + }, + "Ethernet4": { + "autoNegotiate": "unknown", + "bandwidth": 1000000000, + "description": "", + "duplex": "duplexFull", + "forwardingModel": "routed", + "hardware": "ethernet", + "interfaceAddress": [ + { + "broadcastAddress": "255.255.255.255", + "dhcp": false, + "primaryIp": { + "address": "0.0.0.0", + "maskLen": 0 + }, + "secondaryIps": {}, + "secondaryIpsOrderedList": [], + "virtualIp": { + "address": "0.0.0.0", + "maskLen": 0 + }, + "virtualSecondaryIps": {}, + "virtualSecondaryIpsOrderedList": [] + } + ], + "interfaceCounters": { + "counterRefreshTime": 1716995214.376519, + "inBroadcastPkts": 0, + "inDiscards": 0, + "inMulticastPkts": 0, + "inOctets": 0, + "inTotalPkts": 0, + "inUcastPkts": 0, + "inputErrorsDetail": { + "alignmentErrors": 0, + "fcsErrors": 0, + "giantFrames": 0, + "runtFrames": 0, + "rxPause": 0, + "symbolErrors": 0 + }, + "linkStatusChanges": 2, + "outBroadcastPkts": 0, + "outDiscards": 0, + "outMulticastPkts": 20, + "outOctets": 3119, + "outTotalPkts": 20, + "outUcastPkts": 0, + "outputErrorsDetail": { + "collisions": 0, + "deferredTransmissions": 0, + "lateCollisions": 0, + "txPause": 0 + }, + "totalInErrors": 0, + "totalOutErrors": 0 + }, + "interfaceStatistics": { + "inBitsRate": 0.0, + "inPktsRate": 0.0, + "outBitsRate": 37.37829217160852, + "outPktsRate": 0.0288879875526965, + "updateInterval": 300.0 + }, + "interfaceStatus": "connected", + "l2Mru": 0, + "l3MtuConfigured": false, + "lanes": 0, + "lastStatusChangeTimestamp": 1716994739.7757108, + "lineProtocolStatus": "up", + "loopbackMode": "loopbackNone", + "mtu": "1500", + "name": "Ethernet4", + "physicalAddress": "52:54:00:91:1e:bf" + }, + "Management1": { + "autoNegotiate": "success", + "bandwidth": 1000000000, + "burnedInAddress": "52:54:00:0d:29:5c", + "description": "", + "duplex": "duplexFull", + "forwardingModel": "routed", + "hardware": "ethernet", + "interfaceAddress": [ + { + "broadcastAddress": "255.255.255.255", + "dhcp": true, + "primaryIp": { + "address": "198.51.100.1", + "maskLen": 24 + }, + "secondaryIps": {}, + "secondaryIpsOrderedList": [], + "virtualIp": { + "address": "0.0.0.0", + "maskLen": 0 + }, + "virtualSecondaryIps": {}, + "virtualSecondaryIpsOrderedList": [] + } + ], + "interfaceCounters": { + "counterRefreshTime": 1716995214.3750002, + "inBroadcastPkts": 0, + "inDiscards": 0, + "inMulticastPkts": 0, + "inOctets": 25461, + "inTotalPkts": 324, + "inUcastPkts": 324, + "inputErrorsDetail": { + "alignmentErrors": 0, + "fcsErrors": 0, + "giantFrames": 0, + "runtFrames": 0, + "rxPause": 0, + "symbolErrors": 0 + }, + "linkStatusChanges": 3, + "outBroadcastPkts": 0, + "outDiscards": 0, + "outMulticastPkts": 0, + "outOctets": 9254, + "outTotalPkts": 58, + "outUcastPkts": 58, + "outputErrorsDetail": { + "collisions": 0, + "deferredTransmissions": 0, + "lateCollisions": 0, + "txPause": 0 + }, + "totalInErrors": 0, + "totalOutErrors": 0 + }, + "interfaceStatistics": { + "inBitsRate": 384.26192361587044, + "inPktsRate": 0.573833385078406, + "outBitsRate": 181.06973032559827, + "outPktsRate": 0.1379181549989527, + "updateInterval": 300.0 + }, + "interfaceStatus": "connected", + "l2Mru": 0, + "l3MtuConfigured": false, + "lanes": 0, + "lastStatusChangeTimestamp": 1716994731.7559597, + "lineProtocolStatus": "up", + "loopbackMode": "loopbackNone", + "mtu": "1500", + "name": "Management1", + "physicalAddress": "52:54:00:0d:29:5c" + } + } + }, + "show ip interface brief | json": { + "interfaces": { + "Ethernet1": { + "interfaceAddress": { + "ipAddr": { + "address": "1.1.1.1", + "maskLen": 24 + } + }, + "interfaceStatus": "disabled", + "ipv4Routable0": false, + "ipv4Routable240": false, + "lineProtocolStatus": "down", + "mtu": "1500", + "name": "Ethernet1", + "nonRoutableClassEIntf": false + }, + "Ethernet4": { + "interfaceAddress": { + "ipAddr": { + "address": "0.0.0.0", + "maskLen": 0 + } + }, + "interfaceStatus": "connected", + "ipv4Routable0": false, + "ipv4Routable240": false, + "lineProtocolStatus": "up", + "mtu": "1500", + "name": "Ethernet4", + "nonRoutableClassEIntf": false + }, + "Management1": { + "interfaceAddress": { + "ipAddr": { + "address": "198.51.100.1", + "maskLen": 24 + } + }, + "interfaceStatus": "connected", + "ipv4Routable0": false, + "ipv4Routable240": false, + "lineProtocolStatus": "up", + "mtu": "1500", + "name": "Management1", + "nonRoutableClassEIntf": false + } + } + }, + "show version": [ + { + "free_memory": "1030956", + "hw_version": "", + "image": "4.31.0F", + "model": "vEOS-lab", + "serial_number": "17E1C0B9EEFFCE88C2E0703E4A1D4FB0", + "sys_mac": "5254.0091.1ebf", + "total_memory": "1979668" + } + ], + "show interfaces switchport | json": { + "switchports": { + "Ethernet2": { + "enabled": true, + "switchportInfo": { + "mode": "access", + "phoneTrunk": false, + "macLearning": true, + "tpid": "0x8100", + "tpidStatus": true, + "dot1qVlanTagRequired": false, + "dot1qVlanTagRequiredStatus": false, + "dot1qVlanTagDisallowed": false, + "accessVlanId": 1, + "accessVlanName": "default", + "trunkingNativeVlanId": 1, + "trunkingNativeVlanName": "default", + "trunkAllowedVlans": "ALL", + "dynamicAllowedVlans": {}, + "dynamicBlockedVlans": {}, + "staticTrunkGroups": [], + "dynamicTrunkGroups": [], + "sourceportFilterMode": "enabled", + "vlanForwardingMode": "allowedVlansOnly", + "phoneVlan": 0, + "phoneTrunkUntagged": false, + "mbvaEnabled": false + } + }, + "Ethernet3": { + "enabled": true, + "switchportInfo": { + "mode": "access", + "phoneTrunk": false, + "macLearning": true, + "tpid": "0x8100", + "tpidStatus": true, + "dot1qVlanTagRequired": false, + "dot1qVlanTagRequiredStatus": false, + "dot1qVlanTagDisallowed": false, + "accessVlanId": 1, + "accessVlanName": "default", + "trunkingNativeVlanId": 1, + "trunkingNativeVlanName": "default", + "trunkAllowedVlans": "ALL", + "dynamicAllowedVlans": {}, + "dynamicBlockedVlans": {}, + "staticTrunkGroups": [], + "dynamicTrunkGroups": [], + "sourceportFilterMode": "enabled", + "vlanForwardingMode": "allowedVlansOnly", + "phoneVlan": 0, + "phoneTrunkUntagged": false, + "mbvaEnabled": false + } + }, + "Ethernet4": { + "enabled": true, + "switchportInfo": { + "mode": "trunk", + "phoneTrunk": false, + "macLearning": true, + "tpid": "0x8100", + "tpidStatus": true, + "dot1qVlanTagRequired": false, + "dot1qVlanTagRequiredStatus": false, + "dot1qVlanTagDisallowed": false, + "accessVlanId": 1, + "accessVlanName": "default", + "trunkingNativeVlanId": 1, + "trunkingNativeVlanName": "default", + "trunkAllowedVlans": "2", + "dynamicAllowedVlans": {}, + "dynamicBlockedVlans": {}, + "staticTrunkGroups": [], + "dynamicTrunkGroups": [], + "sourceportFilterMode": "enabled", + "vlanForwardingMode": "allowedVlansOnly", + "phoneVlan": 0, + "phoneTrunkUntagged": false, + "mbvaEnabled": false + } + } + } + }, + "show vlan configured-ports | json": { + "vlans": { + "1": { + "name": "default", + "dynamic": false, + "status": "active", + "interfaces": { + "Ethernet2": { + "privatePromoted": false, + "blocked": null + }, + "Ethernet3": { + "privatePromoted": false, + "blocked": null + } + } + }, + "2": { + "name": "VLAN2", + "dynamic": false, + "status": "active", + "interfaces": {} + }, + "10": { + "name": "vid10", + "dynamic": false, + "status": "active", + "interfaces": {} + } + }, + "sourceDetail": "" + } +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/arista_eos/sync_devices/expected_result_1.json b/nautobot_device_onboarding/tests/mock/arista_eos/sync_devices/expected_result_1.json new file mode 100755 index 00000000..6d488373 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/arista_eos/sync_devices/expected_result_1.json @@ -0,0 +1,7 @@ +{ + "device_type": "vEOS-lab", + "hostname": "veos-0", + "mask_length": 24, + "mgmt_interface": "Management1", + "serial": "17E1C0B9EEFFCE88C2E0703E4A1D4FB0" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/arista_eos/sync_network_data_all/expected_result_1.json b/nautobot_device_onboarding/tests/mock/arista_eos/sync_network_data_all/expected_result_1.json new file mode 100755 index 00000000..9e26dfee --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/arista_eos/sync_network_data_all/expected_result_1.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/arista_eos/sync_network_data_no_options/expected_result_1.json b/nautobot_device_onboarding/tests/mock/arista_eos/sync_network_data_no_options/expected_result_1.json new file mode 100755 index 00000000..4d8fa91b --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/arista_eos/sync_network_data_no_options/expected_result_1.json @@ -0,0 +1,70 @@ +{ + "interfaces": { + "Ethernet1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "1.1.1.1", + "prefix_length": 24 + } + ], + "lag": [], + "link_status": "False", + "mac_address": "52:54:00:91:1e:bf", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet2": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "52:54:00:15:b8:13", + "mtu": "9214", + "type": "1000base-t" + }, + "Ethernet3": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "52:54:00:07:8d:69", + "mtu": "9214", + "type": "1000base-t" + }, + "Ethernet4": { + "802.1Q_mode": "tagged", + "description": "", + "ip_addresses": [ + { + "ip_address": "0.0.0.0", + "prefix_length": 0 + } + ], + "lag": [], + "link_status": "True", + "mac_address": "52:54:00:91:1e:bf", + "mtu": "1500", + "type": "1000base-t" + }, + "Management1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": 24 + } + ], + "lag": [], + "link_status": "True", + "mac_address": "52:54:00:0d:29:5c", + "mtu": "1500", + "type": "1000base-t" + } + }, + "serial": "17E1C0B9EEFFCE88C2E0703E4A1D4FB0" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/arista_eos/sync_network_data_with_vlans/expected_result_1.json b/nautobot_device_onboarding/tests/mock/arista_eos/sync_network_data_with_vlans/expected_result_1.json new file mode 100755 index 00000000..fbfd64b4 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/arista_eos/sync_network_data_with_vlans/expected_result_1.json @@ -0,0 +1,94 @@ +{ + "interfaces": { + "Ethernet1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "1.1.1.1", + "prefix_length": 24 + } + ], + "lag": [], + "link_status": "False", + "mac_address": "52:54:00:91:1e:bf", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet2": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "52:54:00:15:b8:13", + "mtu": "9214", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": 1, + "name": "default" + } + }, + "Ethernet3": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "52:54:00:07:8d:69", + "mtu": "9214", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": 1, + "name": "default" + } + }, + "Ethernet4": { + "802.1Q_mode": "tagged", + "description": "", + "ip_addresses": [ + { + "ip_address": "0.0.0.0", + "prefix_length": 0 + } + ], + "lag": [], + "link_status": "True", + "mac_address": "52:54:00:91:1e:bf", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "2", + "name": "VLAN2" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": 1, + "name": "default" + } + }, + "Management1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": 24 + } + ], + "lag": [], + "link_status": "True", + "mac_address": "52:54:00:0d:29:5c", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + } + }, + "serial": "17E1C0B9EEFFCE88C2E0703E4A1D4FB0" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/arista_eos/sync_network_data_with_vrfs/expected_result_1.json b/nautobot_device_onboarding/tests/mock/arista_eos/sync_network_data_with_vrfs/expected_result_1.json new file mode 100755 index 00000000..91bf9083 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/arista_eos/sync_network_data_with_vrfs/expected_result_1.json @@ -0,0 +1,81 @@ +{ + "interfaces": { + "Ethernet1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "1.1.1.1", + "prefix_length": 24 + } + ], + "lag": [], + "link_status": "False", + "mac_address": "52:54:00:91:1e:bf", + "mtu": "1500", + "type": "1000base-t", + "vrf": { + "name": "default" + } + }, + "Ethernet2": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "52:54:00:15:b8:13", + "mtu": "9214", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet3": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "52:54:00:07:8d:69", + "mtu": "9214", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet4": { + "802.1Q_mode": "tagged", + "description": "", + "ip_addresses": [ + { + "ip_address": "0.0.0.0", + "prefix_length": 0 + } + ], + "lag": [], + "link_status": "True", + "mac_address": "52:54:00:91:1e:bf", + "mtu": "1500", + "type": "1000base-t", + "vrf": { + "name": "jeff" + } + }, + "Management1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": 24 + } + ], + "lag": [], + "link_status": "True", + "mac_address": "52:54:00:0d:29:5c", + "mtu": "1500", + "type": "1000base-t", + "vrf": { + "name": "default" + } + } + }, + "serial": "17E1C0B9EEFFCE88C2E0703E4A1D4FB0" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/command_getter_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_ios/command_getter_result_1.json new file mode 100755 index 00000000..556253c4 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/command_getter_result_1.json @@ -0,0 +1,1250 @@ +{ + "show version": [ + { + "software_image": "C3560CX-UNIVERSALK9-M", + "version": "15.2(7)E9", + "release": "fc1", + "rommon": "Bootstrap", + "hostname": "IOS-SW-1", + "uptime": "18 hours, 30 minutes", + "uptime_years": "", + "uptime_weeks": "", + "uptime_days": "", + "uptime_hours": "18", + "uptime_minutes": "30", + "reload_reason": "power-on", + "running_image": "c3560cx-universalk9-mz.152-7.E9.bin", + "hardware": [ + "WS-C3560CX-12PC-S" + ], + "serial": [ + "FOC2341Y2CQ" + ], + "config_register": "0xF", + "mac_address": [ + "6C:71:0D:1D:35:80" + ], + "restarted": "20:40:50 UTC Thu May 30 2024" + } + ], + "show interfaces": [ + { + "interface": "Vlan1", + "link_status": "administratively down", + "protocol_status": "down", + "hardware_type": "EtherSVI", + "mac_address": "6c71.0d1d.35c0", + "bia": "6c71.0d1d.35c0", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Vlan10", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "EtherSVI", + "mac_address": "6c71.0d1d.35c1", + "bia": "6c71.0d1d.35c1", + "description": "", + "ip_address": "198.51.100.1", + "prefix_length": "28", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:00", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "2000", + "output_rate": "3000", + "input_pps": "2", + "output_pps": "2", + "input_packets": "261269", + "output_packets": "270430", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/1", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.3581", + "bia": "6c71.0d1d.3581", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:25", + "last_output": "00:00:01", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "2000", + "input_pps": "0", + "output_pps": "3", + "input_packets": "44714", + "output_packets": "271306", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/2", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.3582", + "bia": "6c71.0d1d.3582", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:27", + "last_output": "00:00:01", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "2000", + "input_pps": "0", + "output_pps": "3", + "input_packets": "43365", + "output_packets": "272016", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/3", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.3583", + "bia": "6c71.0d1d.3583", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:01:02", + "last_output": "00:00:01", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "2000", + "input_pps": "0", + "output_pps": "4", + "input_packets": "35248", + "output_packets": "269609", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/4", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.3584", + "bia": "6c71.0d1d.3584", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:33", + "last_output": "00:00:01", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "1000", + "output_rate": "4000", + "input_pps": "1", + "output_pps": "4", + "input_packets": "1249401", + "output_packets": "1178608", + "runts": "3", + "giants": "0", + "input_errors": "10", + "crc": "7", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/5", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.3585", + "bia": "6c71.0d1d.3585", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/6", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.3586", + "bia": "6c71.0d1d.3586", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/7", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.3587", + "bia": "6c71.0d1d.3587", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/8", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.3588", + "bia": "6c71.0d1d.3588", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/9", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.3589", + "bia": "6c71.0d1d.3589", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/10", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.358a", + "bia": "6c71.0d1d.358a", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/11", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.358b", + "bia": "6c71.0d1d.358b", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/12", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.358c", + "bia": "6c71.0d1d.358c", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/13", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.358d", + "bia": "6c71.0d1d.358d", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/14", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.358e", + "bia": "6c71.0d1d.358e", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/15", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.358f", + "bia": "6c71.0d1d.358f", + "description": "***connection to SW1***", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "1000BaseSX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:00", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "20000", + "output_rate": "11000", + "input_pps": "17", + "output_pps": "6", + "input_packets": "2148367", + "output_packets": "1666583", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/16", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "6c71.0d1d.3590", + "bia": "6c71.0d1d.3590", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "Not Present", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + } + ], + "show vlan": [ + { + "vlan_id": "1", + "vlan_name": "default", + "status": "active", + "interfaces": [ + "Gi0/5", + "Gi0/6", + "Gi0/7", + "Gi0/8", + "Gi0/9", + "Gi0/10", + "Gi0/11", + "Gi0/12", + "Gi0/13", + "Gi0/14", + "Gi0/16" + ] + }, + { + "vlan_id": "10", + "vlan_name": "DATA", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "100", + "vlan_name": "VLAN0100", + "status": "active", + "interfaces": [ + "Gi0/1", + "Gi0/2", + "Gi0/3", + "Gi0/4" + ] + }, + { + "vlan_id": "900", + "vlan_name": "VLAN0900", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "1002", + "vlan_name": "fddi-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1003", + "vlan_name": "token-ring-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1004", + "vlan_name": "fddinet-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1005", + "vlan_name": "trnet-default", + "status": "act/unsup", + "interfaces": [] + } + ], + "show interfaces switchport": [ + { + "interface": "Gi0/1", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "100", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/2", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "100", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/3", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "100", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/4", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "100", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/5", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/6", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/7", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/8", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/9", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/10", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/11", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/12", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/13", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/14", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/15", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "900", + "voice_vlan": "none", + "trunking_vlans": [ + "2,3,5,10,100,170,251,700,900" + ] + }, + { + "interface": "Gi0/16", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + } + ], + "show etherchannel summary": [], + "show ip interface": [ + { + "interface": "Vlan1", + "link_status": "administratively down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Vlan10", + "link_status": "up", + "protocol_status": "up", + "ip_address": [ + "198.51.100.1" + ], + "prefix_length": [ + "28" + ], + "vrf": "", + "mtu": "1500", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/1", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/2", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/3", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/4", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/5", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/6", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/7", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/8", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/9", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/10", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/11", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/12", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/13", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/14", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/15", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/16", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + } + ] +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/command_getter_result_2.json b/nautobot_device_onboarding/tests/mock/cisco_ios/command_getter_result_2.json new file mode 100755 index 00000000..ab9133bb --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/command_getter_result_2.json @@ -0,0 +1,914 @@ +{ + "show vlan": [ + { + "vlan_id": "1", + "vlan_name": "default", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "90", + "vlan_name": "VLAN0090", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "239", + "vlan_name": "VLAN0239", + "status": "active", + "interfaces": [ + "Gi0/1", + "Gi0/2", + "Gi0/3", + "Gi0/4", + "Gi0/5", + "Gi0/6", + "Gi0/7", + "Gi0/8", + "Gi0/9" + ] + }, + { + "vlan_id": "255", + "vlan_name": "v255", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "955", + "vlan_name": "v955", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "1002", + "vlan_name": "fddi-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1003", + "vlan_name": "token-ring-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1004", + "vlan_name": "fddinet-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1005", + "vlan_name": "trnet-default", + "status": "act/unsup", + "interfaces": [] + } + ], + "show version": [ + { + "software_image": "C3560c405ex-UNIVERSALK9-M", + "version": "15.0(2)SE8", + "release": "fc1", + "rommon": "Bootstrap", + "hostname": "3560-01", + "uptime": "1 year, 23 weeks, 6 days, 10 hours, 48 minutes", + "uptime_years": "1", + "uptime_weeks": "23", + "uptime_days": "6", + "uptime_hours": "10", + "uptime_minutes": "48", + "reload_reason": "power-on", + "running_image": "/c3560c405ex-universalk9-mz.150-2.SE8/c3560c405ex-universalk9-mz.150-2.SE8.bin", + "hardware": [ + "WS-C3560CG-8PC-S" + ], + "serial": [ + "FOC1541W2SP" + ], + "config_register": "0xF", + "mac_address": [ + "2C:3F:38:99:15:00" + ], + "restarted": "14:57:03 UTC Thu Dec 22 2022" + } + ], + "show interfaces": [ + { + "interface": "Vlan1", + "link_status": "administratively down", + "protocol_status": "down", + "hardware_type": "EtherSVI", + "mac_address": "2c3f.3899.1540", + "bia": "2c3f.3899.1540", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Vlan255", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "EtherSVI", + "mac_address": "2c3f.3899.1541", + "bia": "2c3f.3899.1541", + "description": "", + "ip_address": "10.35.255.75", + "prefix_length": "24", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:02", + "last_output": "01:39:59", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "22819901", + "output_packets": "3049", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Vlan955", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "EtherSVI", + "mac_address": "2c3f.3899.1542", + "bia": "2c3f.3899.1542", + "description": "", + "ip_address": "198.51.100.1", + "prefix_length": "27", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:00", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "1000", + "output_rate": "2000", + "input_pps": "1", + "output_pps": "1", + "input_packets": "73202704", + "output_packets": "69356133", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/1", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "2c3f.3899.1501", + "bia": "2c3f.3899.1501", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "100Mb/s", + "media_type": "10/100/1000BaseTX", + "bandwidth": "100000 Kbit", + "delay": "100 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "1000", + "input_pps": "0", + "output_pps": "1", + "input_packets": "29688889", + "output_packets": "83895657", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/2", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "2c3f.3899.1502", + "bia": "2c3f.3899.1502", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "100Mb/s", + "media_type": "10/100/1000BaseTX", + "bandwidth": "100000 Kbit", + "delay": "100 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "133000", + "output_rate": "7000", + "input_pps": "17", + "output_pps": "13", + "input_packets": "1093822263", + "output_packets": "735080587", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/3", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "2c3f.3899.1503", + "bia": "2c3f.3899.1503", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "100Mb/s", + "media_type": "10/100/1000BaseTX", + "bandwidth": "100000 Kbit", + "delay": "100 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "92000", + "output_rate": "6000", + "input_pps": "13", + "output_pps": "11", + "input_packets": "694320395", + "output_packets": "572920151", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/4", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "2c3f.3899.1504", + "bia": "2c3f.3899.1504", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "100Mb/s", + "media_type": "10/100/1000BaseTX", + "bandwidth": "100000 Kbit", + "delay": "100 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "145000", + "output_rate": "8000", + "input_pps": "19", + "output_pps": "14", + "input_packets": "874533402", + "output_packets": "662307510", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/5", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "2c3f.3899.1505", + "bia": "2c3f.3899.1505", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:17", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "1916000", + "output_rate": "19000", + "input_pps": "154", + "output_pps": "36", + "input_packets": "929711050", + "output_packets": "290370091", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/6", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "2c3f.3899.1506", + "bia": "2c3f.3899.1506", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/7", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "2c3f.3899.1507", + "bia": "2c3f.3899.1507", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "11w2d", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "38", + "output_packets": "75", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/8", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "2c3f.3899.1508", + "bia": "2c3f.3899.1508", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/9", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "2c3f.3899.1509", + "bia": "2c3f.3899.1509", + "description": "", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "Not Present", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/10", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "2c3f.3899.150a", + "bia": "2c3f.3899.150a", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:00", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "65000", + "output_rate": "2319000", + "input_pps": "109", + "output_pps": "209", + "input_packets": "3816965695", + "output_packets": "3762396995", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + } + ], + "show interfaces switchport": [ + { + "interface": "Gi0/1", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "239", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/2", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "239", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/3", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "239", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/4", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "239", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/5", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "239", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/6", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "239", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/7", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "239", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/8", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "239", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/9", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "239", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/10", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + } + ], + "show etherchannel summary": [], + "show ip interface": [ + { + "interface": "Vlan1", + "link_status": "administratively down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Vlan255", + "link_status": "up", + "protocol_status": "up", + "ip_address": [ + "10.35.255.75" + ], + "prefix_length": [ + "24" + ], + "vrf": "", + "mtu": "1500", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Vlan955", + "link_status": "up", + "protocol_status": "up", + "ip_address": [ + "198.51.100.1" + ], + "prefix_length": [ + "27" + ], + "vrf": "", + "mtu": "1500", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/1", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/2", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/3", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/4", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/5", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/6", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/7", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/8", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/9", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/10", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + } + ] +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/sync_devices/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_devices/expected_result_1.json new file mode 100755 index 00000000..e6890a88 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_devices/expected_result_1.json @@ -0,0 +1,7 @@ +{ + "device_type": "WS-C3560CX-12PC-S", + "hostname": "IOS-SW-1", + "mask_length": 28, + "mgmt_interface": "Vlan10", + "serial": "FOC2341Y2CQ" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/sync_devices/expected_result_2.json b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_devices/expected_result_2.json new file mode 100755 index 00000000..bc117064 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_devices/expected_result_2.json @@ -0,0 +1,7 @@ +{ + "device_type": "WS-C3560CG-8PC-S", + "hostname": "3560-01", + "mask_length": 27, + "mgmt_interface": "Vlan955", + "serial": "FOC1541W2SP" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_all/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_all/expected_result_1.json new file mode 100755 index 00000000..9e26dfee --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_all/expected_result_1.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_all/expected_result_2.json b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_all/expected_result_2.json new file mode 100755 index 00000000..9e26dfee --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_all/expected_result_2.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_no_options/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_no_options/expected_result_1.json new file mode 100755 index 00000000..d4e5073b --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_no_options/expected_result_1.json @@ -0,0 +1,275 @@ +{ + "interfaces": { + "GigabitEthernet0/1": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3581", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/10": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/11": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358b", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/12": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358c", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/13": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358d", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/14": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358e", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/15": { + "802.1Q_mode": "tagged", + "description": "***connection to SW1***", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.358f", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/16": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3590", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/2": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3582", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/3": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3583", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/4": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3584", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/5": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3585", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/6": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3586", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/7": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3587", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/8": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3588", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/9": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3589", + "mtu": "1500", + "type": "1000base-t" + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.35c0", + "mtu": "1500", + "type": "virtual" + }, + "Vlan10": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.35c1", + "mtu": "1500", + "type": "virtual" + } + }, + "serial": "FOC2341Y2CQ" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_no_options/expected_result_2.json b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_no_options/expected_result_2.json new file mode 100755 index 00000000..9b4c9258 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_no_options/expected_result_2.json @@ -0,0 +1,200 @@ +{ + "interfaces": { + "GigabitEthernet0/1": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1501", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/10": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.150a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/2": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1502", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/3": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1503", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1504", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1505", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/6": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1506", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/7": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1507", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/8": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1508", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/9": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1509", + "mtu": "1500", + "type": "1000base-t" + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1540", + "mtu": "1500", + "type": "virtual" + }, + "Vlan255": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "10.35.255.75", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1541", + "mtu": "1500", + "type": "virtual" + }, + "Vlan955": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "27" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1542", + "mtu": "1500", + "type": "virtual" + } + }, + "serial": "FOC1541W2SP" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_cables/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_cables/expected_result_1.json new file mode 100755 index 00000000..05309cd3 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_cables/expected_result_1.json @@ -0,0 +1,292 @@ +{ + "interfaces": { + "GigabitEthernet0/1": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3581", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/10": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/11": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358b", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/12": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358c", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/13": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358d", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/14": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358e", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/15": { + "802.1Q_mode": "tagged", + "description": "***connection to SW1***", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.358f", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/16": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3590", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/2": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3582", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/3": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3583", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/4": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3584", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/5": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3585", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/6": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3586", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/7": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3587", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/8": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3588", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/9": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3589", + "mtu": "1500", + "type": "1000base-t" + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.35c0", + "mtu": "1500", + "type": "virtual" + }, + "Vlan10": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.35c1", + "mtu": "1500", + "type": "virtual" + } + }, + "serial": "FOC2341Y2CQ", + "neighbors": [ + { + "remote_device": "demo-cisco-2", + "local_interface": "GigabitEthernet1", + "remote_interface": "GigabitEthernet1" + }, + { + "remote_device": "demo-cisco-3", + "local_interface": "GigabitEthernet2", + "remote_interface": "GigabitEthernet2" + }, + { + "remote_device": "demo-cisco-4", + "local_interface": "GigabitEthernet3", + "remote_interface": "GigabitEthernet3" + } + ] +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_cables/expected_result_2.json b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_cables/expected_result_2.json new file mode 100755 index 00000000..137430f0 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_cables/expected_result_2.json @@ -0,0 +1,217 @@ +{ + "interfaces": { + "GigabitEthernet0/1": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1501", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/10": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.150a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/2": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1502", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/3": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1503", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1504", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1505", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/6": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1506", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/7": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1507", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/8": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1508", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet0/9": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1509", + "mtu": "1500", + "type": "1000base-t" + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1540", + "mtu": "1500", + "type": "virtual" + }, + "Vlan255": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "10.35.255.75", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1541", + "mtu": "1500", + "type": "virtual" + }, + "Vlan955": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "27" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1542", + "mtu": "1500", + "type": "virtual" + } + }, + "serial": "FOC1541W2SP", + "cables": [ + { + "remote_device": "demo-cisco-1", + "local_interface": "GigabitEthernet1", + "remote_interface": "GigabitEthernet1" + }, + { + "remote_device": "demo-cisco-3", + "local_interface": "GigabitEthernet2", + "remote_interface": "GigabitEthernet2" + }, + { + "remote_device": "demo-cisco-4", + "local_interface": "GigabitEthernet3", + "remote_interface": "GigabitEthernet3" + } + ] +} diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_vlans/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_vlans/expected_result_1.json new file mode 100755 index 00000000..b260338e --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_vlans/expected_result_1.json @@ -0,0 +1,396 @@ +{ + "interfaces": { + "GigabitEthernet0/1": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3581", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "100", + "name": "VLAN0100" + } + }, + "GigabitEthernet0/10": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358a", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/11": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358b", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/12": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358c", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/13": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358d", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/14": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358e", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/15": { + "802.1Q_mode": "tagged", + "description": "***connection to SW1***", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.358f", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "10", + "name": "DATA" + }, + { + "id": "100", + "name": "VLAN0100" + }, + { + "id": "170", + "name": "VLAN0170" + }, + { + "id": "251", + "name": "VLAN0251" + }, + { + "id": "700", + "name": "VLAN0700" + }, + { + "id": "900", + "name": "VLAN0900" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "900", + "name": "VLAN0900" + } + }, + "GigabitEthernet0/16": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3590", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/2": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3582", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "100", + "name": "VLAN0100" + } + }, + "GigabitEthernet0/3": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3583", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "100", + "name": "VLAN0100" + } + }, + "GigabitEthernet0/4": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3584", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "100", + "name": "VLAN0100" + } + }, + "GigabitEthernet0/5": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3585", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/6": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3586", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/7": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3587", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/8": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3588", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/9": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3589", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.35c0", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan10": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.35c1", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + } + }, + "serial": "FOC2341Y2CQ" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_vlans/expected_result_2.json b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_vlans/expected_result_2.json new file mode 100755 index 00000000..a215066d --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_vlans/expected_result_2.json @@ -0,0 +1,256 @@ +{ + "interfaces": { + "GigabitEthernet0/1": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1501", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "239", + "name": "VLAN0239" + } + }, + "GigabitEthernet0/10": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.150a", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/2": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1502", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "239", + "name": "VLAN0239" + } + }, + "GigabitEthernet0/3": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1503", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "239", + "name": "VLAN0239" + } + }, + "GigabitEthernet0/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1504", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "239", + "name": "VLAN0239" + } + }, + "GigabitEthernet0/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1505", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "239", + "name": "VLAN0239" + } + }, + "GigabitEthernet0/6": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1506", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "239", + "name": "VLAN0239" + } + }, + "GigabitEthernet0/7": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1507", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "239", + "name": "VLAN0239" + } + }, + "GigabitEthernet0/8": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1508", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "239", + "name": "VLAN0239" + } + }, + "GigabitEthernet0/9": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1509", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "239", + "name": "VLAN0239" + } + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1540", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan255": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "10.35.255.75", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1541", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan955": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "27" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1542", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + } + }, + "serial": "FOC1541W2SP" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_vrfs/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_vrfs/expected_result_1.json new file mode 100755 index 00000000..4f9f3159 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_vrfs/expected_result_1.json @@ -0,0 +1,293 @@ +{ + "interfaces": { + "GigabitEthernet0/1": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3581", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/10": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358a", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/11": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358b", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/12": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358c", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/13": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358d", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/14": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.358e", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/15": { + "802.1Q_mode": "tagged", + "description": "***connection to SW1***", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.358f", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/16": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3590", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/2": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3582", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/3": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3583", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/4": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.3584", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/5": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3585", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/6": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3586", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/7": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3587", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/8": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3588", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/9": { + "802.1Q_mode": "tagged-all", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.3589", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "6c71.0d1d.35c0", + "mtu": "1500", + "type": "virtual", + "vrf": {} + }, + "Vlan10": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "6c71.0d1d.35c1", + "mtu": "1500", + "type": "virtual", + "vrf": {} + } + }, + "serial": "FOC2341Y2CQ" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_vrfs/expected_result_2.json b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_vrfs/expected_result_2.json new file mode 100755 index 00000000..72f72c85 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_ios/sync_network_data_with_vrfs/expected_result_2.json @@ -0,0 +1,213 @@ +{ + "interfaces": { + "GigabitEthernet0/1": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1501", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/10": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.150a", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/2": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1502", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/3": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1503", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1504", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1505", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/6": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1506", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/7": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1507", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/8": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1508", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet0/9": { + "802.1Q_mode": "access", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1509", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "2c3f.3899.1540", + "mtu": "1500", + "type": "virtual", + "vrf": {} + }, + "Vlan255": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "10.35.255.75", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1541", + "mtu": "1500", + "type": "virtual", + "vrf": {} + }, + "Vlan955": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "27" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "2c3f.3899.1542", + "mtu": "1500", + "type": "virtual", + "vrf": {} + } + }, + "serial": "FOC1541W2SP" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_nxos/command_getter_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_nxos/command_getter_result_1.json new file mode 100755 index 00000000..6d09e2a6 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_nxos/command_getter_result_1.json @@ -0,0 +1,6863 @@ +{ + "show version": [ + { + "uptime": "1811 day(s), 10 hour(s), 11 minute(s), 53 second(s)", + "last_reboot_reason": "Reset due to upgrade", + "os": "7.0(3)I7(4)", + "boot_image": "bootflash:///nxos.7.0.3.I7.4.bin", + "platform": "C9372PX", + "hostname": "N9k-01", + "serial": "FDO20432435" + } + ], + "show inventory": [ + { + "name": "Chassis", + "descr": "Nexus9000 C9372PX chassis", + "pid": "N9K-C9372PX-E", + "vid": "V01", + "sn": "FDO20432435" + }, + { + "name": "Slot 1", + "descr": "48x1/10G SFP+ 6x40G Ethernet Module", + "pid": "N9K-C9372PX-E", + "vid": "V01", + "sn": "FDO20432435" + }, + { + "name": "Power Supply 1", + "descr": "Nexus9000 C9372PX chassis Power Supply", + "pid": "N9K-PAC-650W-B", + "vid": "V01", + "sn": "LIT20383APQ" + }, + { + "name": "Power Supply 2", + "descr": "Nexus9000 C9372PX chassis Power Supply", + "pid": "N9K-PAC-650W-B", + "vid": "V01", + "sn": "LIT20383APR" + }, + { + "name": "Fan 1", + "descr": "Nexus9000 C9372PX chassis Fan Module", + "pid": "NXA-FAN-30CFM-F", + "vid": "V01", + "sn": "N/A" + }, + { + "name": "Fan 2", + "descr": "Nexus9000 C9372PX chassis Fan Module", + "pid": "NXA-FAN-30CFM-F", + "vid": "V01", + "sn": "N/A" + }, + { + "name": "Fan 3", + "descr": "Nexus9000 C9372PX chassis Fan Module", + "pid": "NXA-FAN-30CFM-F", + "vid": "V01", + "sn": "N/A" + }, + { + "name": "Fan 4", + "descr": "Nexus9000 C9372PX chassis Fan Module", + "pid": "NXA-FAN-30CFM-F", + "vid": "V01", + "sn": "N/A" + } + ], + "show ip interface brief vrf all": [ + { + "vrf": "default", + "interface": "Vlan64", + "ip_address": "10.34.6.126", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down" + }, + { + "vrf": "default", + "interface": "Vlan66", + "ip_address": "10.27.66.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan67", + "ip_address": "10.27.67.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan68", + "ip_address": "10.27.68.3", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down" + }, + { + "vrf": "default", + "interface": "Vlan70", + "ip_address": "10.27.70.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan71", + "ip_address": "10.27.71.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan72", + "ip_address": "10.27.72.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan110", + "ip_address": "10.34.1.67", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan115", + "ip_address": "10.34.1.83", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down" + }, + { + "vrf": "default", + "interface": "Vlan128", + "ip_address": "10.34.6.133", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down" + }, + { + "vrf": "default", + "interface": "Vlan135", + "ip_address": "10.27.135.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan136", + "ip_address": "144.5.136.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan160", + "ip_address": "10.34.6.174", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down" + }, + { + "vrf": "default", + "interface": "Vlan176", + "ip_address": "10.34.6.190", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down" + }, + { + "vrf": "default", + "interface": "Vlan192", + "ip_address": "10.34.6.198", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down" + }, + { + "vrf": "default", + "interface": "Vlan200", + "ip_address": "10.27.111.19", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan201", + "ip_address": "10.27.73.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan202", + "ip_address": "10.27.111.42", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan210", + "ip_address": "10.27.111.98", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan215", + "ip_address": "10.27.57.131", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan216", + "ip_address": "10.27.57.195", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan218", + "ip_address": "10.27.218.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan219", + "ip_address": "10.27.219.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan220", + "ip_address": "10.27.59.243", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan345", + "ip_address": "10.34.5.174", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down" + }, + { + "vrf": "default", + "interface": "Vlan350", + "ip_address": "139.65.137.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan3130", + "ip_address": "172.22.8.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Vlan3146", + "ip_address": "10.27.197.131", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Lo0", + "ip_address": "10.27.111.247", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Po41", + "ip_address": "10.1.0.2", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Eth1/1.1", + "ip_address": "139.65.22.246", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Eth1/2.1", + "ip_address": "139.65.22.250", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "default", + "interface": "Eth1/28.2", + "ip_address": "172.16.0.2", + "status": "admin-up", + "link": "link-down", + "proto": "protocol-down" + }, + { + "vrf": "management", + "interface": "mgmt0", + "ip_address": "198.51.100.1", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "Servers", + "interface": "Vlan63", + "ip_address": "10.27.63.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "Servers", + "interface": "Vlan214", + "ip_address": "10.27.111.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up" + }, + { + "vrf": "NFS", + "interface": "Vlan3112", + "ip_address": "172.22.32.1", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down" + } + ], + "show ip interface vrf all": [ + { + "vrf": "default", + "interface": "Vlan64", + "ip_address": "10.34.6.126", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down", + "subnet": "10.34.6.64/26", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.13", + "224.0.0.102", + "224.0.0.2", + "224.0.0.1" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan66", + "ip_address": "10.27.66.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.66.0/24", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.13", + "224.0.0.102", + "224.0.0.2", + "224.0.0.1" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan67", + "ip_address": "10.27.67.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.67.0/24", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.13", + "224.0.0.2", + "224.0.0.1", + "224.0.0.102" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan68", + "ip_address": "10.27.68.3", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down", + "subnet": "10.27.68.0/24", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.2", + "224.0.0.13", + "224.0.0.1", + "224.0.0.102" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan70", + "ip_address": "10.27.70.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.70.0/24", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.13", + "224.0.0.2", + "224.0.0.1", + "224.0.0.102" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan71", + "ip_address": "10.27.71.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.71.0/24", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.102", + "224.0.0.13", + "224.0.0.2", + "224.0.0.1" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan72", + "ip_address": "10.27.72.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.72.0/24", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.13", + "224.0.0.102", + "224.0.0.2", + "224.0.0.1" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan110", + "ip_address": "10.34.1.67", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.34.1.64/28", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.13", + "224.0.0.2", + "224.0.0.1", + "224.0.0.102" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan115", + "ip_address": "10.34.1.83", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down", + "subnet": "10.34.1.80/28", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.2", + "224.0.0.1", + "224.0.0.102", + "224.0.0.13" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan128", + "ip_address": "10.34.6.133", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down", + "subnet": "10.34.6.128/27", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.2", + "224.0.0.1", + "224.0.0.102", + "224.0.0.13" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan135", + "ip_address": "10.27.135.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.135.0/24", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.2", + "224.0.0.1", + "224.0.0.102", + "224.0.0.13" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan136", + "ip_address": "144.5.136.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "144.5.136.0/24", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.13", + "224.0.0.2", + "224.0.0.1", + "224.0.0.102" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan160", + "ip_address": "10.34.6.174", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down", + "subnet": "10.34.6.160/28", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.2", + "224.0.0.1", + "224.0.0.102", + "224.0.0.13" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan176", + "ip_address": "10.34.6.190", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down", + "subnet": "10.34.6.176/28", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.2", + "224.0.0.1", + "224.0.0.102", + "224.0.0.13" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan192", + "ip_address": "10.34.6.198", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down", + "subnet": "10.34.6.192/29", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.2", + "224.0.0.1", + "224.0.0.13", + "224.0.0.102" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan200", + "ip_address": "10.27.111.19", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.111.16/29", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "none" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "disabled", + "icmp_redirects": "disabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "enabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan201", + "ip_address": "10.27.73.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.73.0/29", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.102", + "224.0.0.13", + "224.0.0.2", + "224.0.0.1" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "disabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan202", + "ip_address": "10.27.111.42", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.111.40/29", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.102", + "224.0.0.13", + "224.0.0.2", + "224.0.0.1" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "disabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan210", + "ip_address": "10.27.111.98", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.111.96/29", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "none" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "disabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan215", + "ip_address": "10.27.57.131", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.57.128/26", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.102", + "224.0.0.13", + "224.0.0.2", + "224.0.0.1" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "disabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan216", + "ip_address": "10.27.57.195", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.57.192/26", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.102", + "224.0.0.13", + "224.0.0.2", + "224.0.0.1" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "disabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan218", + "ip_address": "10.27.218.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.218.0/24", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.102", + "224.0.0.2", + "224.0.0.1", + "224.0.0.13" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan219", + "ip_address": "10.27.219.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.219.0/24", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.13", + "224.0.0.2", + "224.0.0.1", + "224.0.0.102" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan220", + "ip_address": "10.27.59.243", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.59.240/29", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "none" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "disabled", + "icmp_redirects": "disabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan345", + "ip_address": "10.34.5.174", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down", + "subnet": "10.34.5.160/28", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.102", + "224.0.0.2", + "224.0.0.13", + "224.0.0.1" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan350", + "ip_address": "139.65.137.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "139.65.137.0/26", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.102", + "224.0.0.13", + "224.0.0.2", + "224.0.0.1" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan3130", + "ip_address": "172.22.8.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "172.22.8.0/24", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.102", + "224.0.0.2", + "224.0.0.1", + "224.0.0.13" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "disabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Vlan3146", + "ip_address": "10.27.197.131", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.197.128/25", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.102", + "224.0.0.13", + "224.0.0.2", + "224.0.0.1" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "disabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "loopback0", + "ip_address": "10.27.111.247", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.111.247/32", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "none" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "disabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "port-channel41", + "ip_address": "10.1.0.2", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.1.0.0/30", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "none" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "disabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Ethernet1/1.1", + "ip_address": "139.65.22.246", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "139.65.22.244/30", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.13", + "224.0.0.2", + "224.0.0.1" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Ethernet1/2.1", + "ip_address": "139.65.22.250", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "139.65.22.248/30", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.13", + "224.0.0.2", + "224.0.0.1" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "default", + "interface": "Ethernet1/28.2", + "ip_address": "172.16.0.2", + "status": "admin-up", + "link": "link-down", + "proto": "protocol-down", + "subnet": "172.16.0.2/31", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "none" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "disabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "management", + "interface": "mgmt0", + "ip_address": "198.51.100.1", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.65.0/24", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "none" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "disabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "Servers", + "interface": "Vlan63", + "ip_address": "10.27.63.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.63.0/25", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.102", + "224.0.0.13", + "224.0.0.2", + "224.0.0.1" + ], + "mtu": "9216", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "enabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "enabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "Servers", + "interface": "Vlan214", + "ip_address": "10.27.111.3", + "status": "admin-up", + "link": "link-up", + "proto": "protocol-up", + "subnet": "10.27.111.0/29", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "224.0.0.2", + "224.0.0.1", + "224.0.0.13" + ], + "mtu": "1500", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "enabled", + "icmp_redirects": "disabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "enabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + }, + { + "vrf": "NFS", + "interface": "Vlan3112", + "ip_address": "172.22.32.1", + "status": "admin-down", + "link": "link-down", + "proto": "protocol-down", + "subnet": "172.22.32.0/21", + "route_pref": "0", + "route_tag": "0", + "broadcast": "255.255.255.255", + "multicast_groups": [ + "none" + ], + "mtu": "9216", + "proxy_arp": "disabled", + "ip_local_proxy_arp": "disabled", + "multicast_routing": "disabled", + "icmp_redirects": "disabled", + "ip_directed_broadcast": "disabled", + "ip_forwarding": "disabled", + "icmp_unreachables": "disabled", + "icmp_port_unreachables": "enabled", + "ip_unicast_rpf": "none", + "ip_load_sharing": "none", + "wccp_redirect_outbound": "disabled", + "wccp_redirect_inbound": "disabled", + "wccp_redirect_exclude": "disabled", + "secondary_ip_address": [], + "secondary_ip_subnet": [], + "secondary_route_pref": [], + "secondary_route_tag": [], + "acl_out": "", + "unnumbered_parent_intf": "", + "unnumbered_child_intfs": [] + } + ], + "show interface": [ + { + "interface": "mgmt0", + "link_status": "up", + "admin_state": "up", + "hardware_type": "GigabitEthernet", + "mac_address": "286f.7f7e.99e4", + "bia": "286f.7f7e.99e4", + "description": "a description", + "ip_address": "198.51.100.1", + "prefix_length": "24", + "mtu": "1500", + "mode": "", + "duplex": "full-duplex", + "speed": "1000 Mb/s", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Ethernet1/1", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99eb", + "bia": "286f.7f7e.99ec", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "997526772472", + "output_packets": "581400270782", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "100week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/1.1", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99eb", + "bia": "286f.7f7e.99ec", + "description": "a description", + "ip_address": "139.65.22.246", + "prefix_length": "30", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "802.1Q", + "last_link_flapped": "", + "vlan_id": "903" + }, + { + "interface": "Ethernet1/2", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99eb", + "bia": "286f.7f7e.99ed", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "2132046802967", + "output_packets": "2556135548245", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "101week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/2.1", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99eb", + "bia": "286f.7f7e.99ed", + "description": "a description", + "ip_address": "139.65.22.250", + "prefix_length": "30", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "802.1Q", + "last_link_flapped": "", + "vlan_id": "904" + }, + { + "interface": "Ethernet1/3", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99ee", + "bia": "286f.7f7e.99ee", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/4", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99ef", + "bia": "286f.7f7e.99ef", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "2419287017402", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "138week(s) 3day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/5", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99f0", + "bia": "286f.7f7e.99f0", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "65314238", + "output_packets": "133985219", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "56week(s) 2day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/6", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99f1", + "bia": "286f.7f7e.99f1", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "70952159970", + "output_packets": "100548427863", + "input_errors": "1", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "10week(s) 0day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/7", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99f2", + "bia": "286f.7f7e.99f2", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "4490743509", + "output_packets": "28169458376", + "input_errors": "48", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "193week(s) 6day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/8", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99f3", + "bia": "286f.7f7e.99f3", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "3284639149", + "output_packets": "12391032021", + "input_errors": "61", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "193week(s) 6day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/9", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99f4", + "bia": "286f.7f7e.99f4", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "22196412858", + "output_packets": "23428521373", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "187week(s) 0day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/10", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99f5", + "bia": "286f.7f7e.99f5", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "24858583807", + "output_packets": "16227017943", + "input_errors": "12", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "187week(s) 0day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/11", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99f6", + "bia": "286f.7f7e.99f6", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/12", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99f7", + "bia": "286f.7f7e.99f7", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/13", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99f8", + "bia": "286f.7f7e.99f8", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/14", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99f9", + "bia": "286f.7f7e.99f9", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/15", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99fa", + "bia": "286f.7f7e.99fa", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/16", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99fb", + "bia": "286f.7f7e.99fb", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/17", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99fc", + "bia": "286f.7f7e.99fc", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/18", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99fd", + "bia": "286f.7f7e.99fd", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/19", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99fe", + "bia": "286f.7f7e.99fe", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/20", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99ff", + "bia": "286f.7f7e.99ff", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/21", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a00", + "bia": "286f.7f7e.9a00", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/22", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a01", + "bia": "286f.7f7e.9a01", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/23", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a02", + "bia": "286f.7f7e.9a02", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/24", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a03", + "bia": "286f.7f7e.9a03", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "full-duplex", + "speed": "1000 Mb/s", + "input_packets": "3409513878", + "output_packets": "2086988573", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "10week(s) 3day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/25", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a04", + "bia": "286f.7f7e.9a04", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/26", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a05", + "bia": "286f.7f7e.9a05", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/27", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a06", + "bia": "286f.7f7e.9a06", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/28", + "link_status": "down (Administratively down)", + "admin_state": "down", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99eb", + "bia": "286f.7f7e.9a07", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "auto-duplex", + "speed": "1000 Mb/s", + "input_packets": "283625545", + "output_packets": "284394564", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "24week(s) 0day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/28.2", + "link_status": "down (Parent Interface Admin down)", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99eb", + "bia": "286f.7f7e.9a07", + "description": "a description", + "ip_address": "172.16.0.2", + "prefix_length": "31", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "802.1Q", + "last_link_flapped": "", + "vlan_id": "2" + }, + { + "interface": "Ethernet1/29", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a08", + "bia": "286f.7f7e.9a08", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "690958667732", + "output_packets": "733836099859", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/30", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a09", + "bia": "286f.7f7e.9a09", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "877736768668", + "output_packets": "750451049269", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/31", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a0a", + "bia": "286f.7f7e.9a0a", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "353292832527", + "output_packets": "749635353509", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/32", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a0b", + "bia": "286f.7f7e.9a0b", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "278382231526", + "output_packets": "753122266966", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/33", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a0c", + "bia": "286f.7f7e.9a0c", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "1000 Mb/s", + "input_packets": "186792950699", + "output_packets": "124468230706", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "10week(s) 3day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/34", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a0d", + "bia": "286f.7f7e.9a0d", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "1000 Mb/s", + "input_packets": "158151047346", + "output_packets": "105374085608", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "10week(s) 3day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/35", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a0e", + "bia": "286f.7f7e.9a0e", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "1000 Mb/s", + "input_packets": "339646146272", + "output_packets": "402588117472", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "10week(s) 3day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/36", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a0f", + "bia": "286f.7f7e.9a0f", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "1000 Mb/s", + "input_packets": "341382509315", + "output_packets": "395406400668", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "10week(s) 3day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/37", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a10", + "bia": "286f.7f7e.9a10", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "33237665795", + "output_packets": "15611503920", + "input_errors": "5", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/38", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a11", + "bia": "286f.7f7e.9a11", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "55824245126", + "output_packets": "12127041939", + "input_errors": "7", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/39", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a12", + "bia": "286f.7f7e.9a12", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "39140605507", + "output_packets": "12960548777", + "input_errors": "3", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/40", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a13", + "bia": "286f.7f7e.9a13", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "35611705441", + "output_packets": "12968363542", + "input_errors": "50", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/41", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99eb", + "bia": "286f.7f7e.9a14", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "full-duplex", + "speed": "1000 Mb/s", + "input_packets": "169527202", + "output_packets": "169527032", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/42", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.99eb", + "bia": "286f.7f7e.9a15", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "full-duplex", + "speed": "1000 Mb/s", + "input_packets": "13041749", + "output_packets": "13041583", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/43", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a16", + "bia": "286f.7f7e.9a16", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "147353804507", + "output_packets": "323282303263", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/44", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a17", + "bia": "286f.7f7e.9a17", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "154197058678", + "output_packets": "340886552128", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/45", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a18", + "bia": "286f.7f7e.9a18", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "286909909497", + "output_packets": "432079922683", + "input_errors": "151", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/46", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a19", + "bia": "286f.7f7e.9a19", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "285801842615", + "output_packets": "416715568480", + "input_errors": "96", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "258week(s) 5day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/47", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a1a", + "bia": "286f.7f7e.9a1a", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "1087181812070", + "output_packets": "397092136410", + "input_errors": "11468", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "238week(s) 6day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/48", + "link_status": "up", + "admin_state": "up", + "hardware_type": "1000/10000 Ethernet", + "mac_address": "286f.7f7e.9a1b", + "bia": "286f.7f7e.9a1b", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "1096934421646", + "output_packets": "405161742267", + "input_errors": "10757", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "238week(s) 6day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/49", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "10000/40000 Ethernet", + "mac_address": "286f.7f7e.9a1c", + "bia": "286f.7f7e.9a1c", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/50", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "10000/40000 Ethernet", + "mac_address": "286f.7f7e.9a1d", + "bia": "286f.7f7e.9a1d", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/51", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "10000/40000 Ethernet", + "mac_address": "286f.7f7e.9a1e", + "bia": "286f.7f7e.9a1e", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/52", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "10000/40000 Ethernet", + "mac_address": "286f.7f7e.9a1f", + "bia": "286f.7f7e.9a1f", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "Ethernet1/53", + "link_status": "down (Link not connected)", + "admin_state": "up", + "hardware_type": "10000/40000 Ethernet", + "mac_address": "286f.7f7e.9a20", + "bia": "286f.7f7e.9a20", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "131575706", + "output_packets": "100692177", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "3week(s) 2day(s)", + "vlan_id": "" + }, + { + "interface": "Ethernet1/54", + "link_status": "down (XCVR not inserted)", + "admin_state": "up", + "hardware_type": "10000/40000 Ethernet", + "mac_address": "286f.7f7e.9a21", + "bia": "286f.7f7e.9a21", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "never", + "vlan_id": "" + }, + { + "interface": "port-channel3", + "link_status": "down (No operational members)", + "admin_state": "up", + "hardware_type": "Port-Channel", + "mac_address": "0000.0000.0000", + "bia": "0000.0000.0000", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "100000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "port-channel6", + "link_status": "up", + "admin_state": "up", + "hardware_type": "Port-Channel", + "mac_address": "286f.7f7e.99f1", + "bia": "286f.7f7e.99f1", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "access", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "70952159970", + "output_packets": "100548427863", + "input_errors": "1", + "output_errors": "0", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "port-channel7", + "link_status": "up", + "admin_state": "up", + "hardware_type": "Port-Channel", + "mac_address": "286f.7f7e.99f3", + "bia": "286f.7f7e.99f3", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "54830379323", + "output_packets": "80216029713", + "input_errors": "121", + "output_errors": "0", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "port-channel29", + "link_status": "up", + "admin_state": "up", + "hardware_type": "Port-Channel", + "mac_address": "286f.7f7e.9a0a", + "bia": "286f.7f7e.9a0a", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "2200370500453", + "output_packets": "2987044769603", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "port-channel33", + "link_status": "up", + "admin_state": "up", + "hardware_type": "Port-Channel", + "mac_address": "286f.7f7e.9a0c", + "bia": "286f.7f7e.9a0c", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "1000 Mb/s", + "input_packets": "344943998045", + "output_packets": "229842316314", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "2000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "port-channel35", + "link_status": "up", + "admin_state": "up", + "hardware_type": "Port-Channel", + "mac_address": "286f.7f7e.9a0e", + "bia": "286f.7f7e.9a0e", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "1000 Mb/s", + "input_packets": "681028655587", + "output_packets": "797994518140", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "2000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "port-channel36", + "link_status": "down (Administratively down)", + "admin_state": "down", + "hardware_type": "Port-Channel", + "mac_address": "0000.0000.0000", + "bia": "0000.0000.0000", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "auto-duplex", + "speed": "auto-speed", + "input_packets": "0", + "output_packets": "0", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "100000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "port-channel37", + "link_status": "up", + "admin_state": "up", + "hardware_type": "Port-Channel", + "mac_address": "286f.7f7e.9a10", + "bia": "286f.7f7e.9a10", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "163814221869", + "output_packets": "53667458178", + "input_errors": "65", + "output_errors": "0", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "port-channel41", + "link_status": "up", + "admin_state": "up", + "hardware_type": "Port-Channel", + "mac_address": "286f.7f7e.99eb", + "bia": "286f.7f7e.9a14", + "description": "a description", + "ip_address": "10.1.0.2", + "prefix_length": "30", + "mtu": "1500", + "mode": "", + "duplex": "full-duplex", + "speed": "1000 Mb/s", + "input_packets": "182568951", + "output_packets": "182568615", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "2000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "port-channel43", + "link_status": "up", + "admin_state": "up", + "hardware_type": "Port-Channel", + "mac_address": "286f.7f7e.9a16", + "bia": "286f.7f7e.9a16", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "301550863185", + "output_packets": "664168855391", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "20000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "port-channel45", + "link_status": "up", + "admin_state": "up", + "hardware_type": "Port-Channel", + "mac_address": "286f.7f7e.9a18", + "bia": "286f.7f7e.9a18", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "full-duplex", + "speed": "10 Gb/s", + "input_packets": "2756827985828", + "output_packets": "1651049369840", + "input_errors": "22472", + "output_errors": "0", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "port-channel53", + "link_status": "down (No operational members)", + "admin_state": "up", + "hardware_type": "Port-Channel", + "mac_address": "0000.0000.0000", + "bia": "0000.0000.0000", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "trunk", + "duplex": "auto-duplex", + "speed": "40 Gb/s", + "input_packets": "131575706", + "output_packets": "100692177", + "input_errors": "0", + "output_errors": "0", + "bandwidth": "100000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "loopback0", + "link_status": "up", + "admin_state": "up", + "hardware_type": "", + "mac_address": "", + "bia": "", + "description": "a description", + "ip_address": "10.27.111.247", + "prefix_length": "32", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "8000000 Kbit", + "delay": "5000 usec", + "encapsulation": "LOOPBACK", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan1", + "link_status": "down (Administratively down)", + "admin_state": "down, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan63", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan64", + "link_status": "down (Administratively down)", + "admin_state": "down, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan66", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan67", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan68", + "link_status": "down (Administratively down)", + "admin_state": "down, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan70", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan71", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan72", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan110", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan115", + "link_status": "down (Administratively down)", + "admin_state": "down, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan128", + "link_status": "down (Administratively down)", + "admin_state": "down, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan135", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan136", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "144.5.136.3", + "prefix_length": "24", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan160", + "link_status": "down (Administratively down)", + "admin_state": "down, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan176", + "link_status": "down (Administratively down)", + "admin_state": "down, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan192", + "link_status": "down (Administratively down)", + "admin_state": "down, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan200", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan201", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan202", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan210", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan214", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan215", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan216", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan218", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan219", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan220", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan345", + "link_status": "down (Administratively down)", + "admin_state": "down, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan350", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan3112", + "link_status": "down (Administratively down)", + "admin_state": "down, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "172.22.32.1", + "prefix_length": "21", + "mtu": "9216", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan3130", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + }, + { + "interface": "Vlan3146", + "link_status": "up", + "admin_state": "up, autostate enabled", + "hardware_type": "EtherSVI", + "mac_address": "286f.7f7e.99eb", + "bia": "", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "mode": "", + "duplex": "", + "speed": "", + "input_packets": "", + "output_packets": "", + "input_errors": "", + "output_errors": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_link_flapped": "", + "vlan_id": "" + } + ], + "show port-channel summary": [ + { + "bundle_name": "Po3", + "bundle_status": "SD", + "bundle_protocol": "LACP", + "bundle_protocol_state": "", + "member_interface": [ + "Eth1/3" + ], + "member_interface_status": [ + "D" + ] + }, + { + "bundle_name": "Po6", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "bundle_protocol_state": "", + "member_interface": [ + "Eth1/6" + ], + "member_interface_status": [ + "P" + ] + }, + { + "bundle_name": "Po7", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "bundle_protocol_state": "", + "member_interface": [ + "Eth1/7", + "Eth1/8", + "Eth1/9", + "Eth1/10" + ], + "member_interface_status": [ + "P", + "P", + "P", + "P" + ] + }, + { + "bundle_name": "Po29", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "bundle_protocol_state": "", + "member_interface": [ + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32" + ], + "member_interface_status": [ + "P", + "P", + "P", + "P" + ] + }, + { + "bundle_name": "Po33", + "bundle_status": "SU", + "bundle_protocol": "NONE", + "bundle_protocol_state": "", + "member_interface": [ + "Eth1/33", + "Eth1/34" + ], + "member_interface_status": [ + "P", + "P" + ] + }, + { + "bundle_name": "Po35", + "bundle_status": "SU", + "bundle_protocol": "NONE", + "bundle_protocol_state": "", + "member_interface": [ + "Eth1/35", + "Eth1/36" + ], + "member_interface_status": [ + "P", + "P" + ] + }, + { + "bundle_name": "Po36", + "bundle_status": "SD", + "bundle_protocol": "NONE", + "bundle_protocol_state": "", + "member_interface": [ + "--" + ], + "member_interface_status": [] + }, + { + "bundle_name": "Po37", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "bundle_protocol_state": "", + "member_interface": [ + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40" + ], + "member_interface_status": [ + "P", + "P", + "P", + "P" + ] + }, + { + "bundle_name": "Po41", + "bundle_status": "RU", + "bundle_protocol": "LACP", + "bundle_protocol_state": "", + "member_interface": [ + "Eth1/41", + "Eth1/42" + ], + "member_interface_status": [ + "P", + "P" + ] + }, + { + "bundle_name": "Po43", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "bundle_protocol_state": "", + "member_interface": [ + "Eth1/43", + "Eth1/44" + ], + "member_interface_status": [ + "P", + "P" + ] + }, + { + "bundle_name": "Po45", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "bundle_protocol_state": "", + "member_interface": [ + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ], + "member_interface_status": [ + "P", + "P", + "P", + "P" + ] + }, + { + "bundle_name": "Po53", + "bundle_status": "SD", + "bundle_protocol": "LACP", + "bundle_protocol_state": "", + "member_interface": [ + "Eth1/53" + ], + "member_interface_status": [ + "D" + ] + } + ], + "show vrf interface": [ + { + "interface": "Vlan3112", + "name": "NFS", + "id": "3", + "origin": "--" + }, + { + "interface": "Vlan63", + "name": "Servers", + "id": "4", + "origin": "--" + }, + { + "interface": "Vlan214", + "name": "Servers", + "id": "4", + "origin": "--" + }, + { + "interface": "Vlan1", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan64", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan66", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan67", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan68", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan70", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan71", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan72", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan110", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan115", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan128", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan135", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan136", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan160", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan176", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan192", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan200", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan201", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan202", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan210", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan215", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan216", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan218", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan219", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan220", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan345", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan350", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan3130", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Vlan3146", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "loopback0", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "port-channel41", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Ethernet1/1", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Ethernet1/1.1", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Ethernet1/2", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Ethernet1/2.1", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Ethernet1/28", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "Ethernet1/28.2", + "name": "default", + "id": "1", + "origin": "--" + }, + { + "interface": "mgmt0", + "name": "management", + "id": "2", + "origin": "--" + } + ], + "show vlan": [ + { + "vlan_id": "1", + "vlan_name": "default", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/4", + "Eth1/11", + "Eth1/12", + "Eth1/13", + "Eth1/14", + "Eth1/15", + "Eth1/16", + "Eth1/17", + "Eth1/18", + "Eth1/19", + "Eth1/20", + "Eth1/21", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48", + "Eth1/49", + "Eth1/50", + "Eth1/51", + "Eth1/52", + "Eth1/54" + ] + }, + { + "vlan_id": "10", + "vlan_name": "vlan10", + "status": "active", + "interfaces": [ + "Po29", + "Po43", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/43", + "Eth1/44", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "63", + "vlan_name": "vlan63", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "64", + "vlan_name": "vlan64", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/23", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "65", + "vlan_name": "vlan65", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "66", + "vlan_name": "vlan66", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "67", + "vlan_name": "vlan67", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/24", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "68", + "vlan_name": "vlan68", + "status": "active", + "interfaces": [ + "Po3", + "Po7", + "Po29", + "Po37", + "Po45", + "Po53", + "Eth1/3", + "Eth1/7", + "Eth1/8", + "Eth1/9", + "Eth1/10", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48", + "Eth1/53" + ] + }, + { + "vlan_id": "70", + "vlan_name": "vlan70", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "71", + "vlan_name": "vlan71", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "72", + "vlan_name": "vlan72", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "110", + "vlan_name": "vid110", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/23", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "115", + "vlan_name": "v115", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/23", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "128", + "vlan_name": "vlan128", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/23", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "135", + "vlan_name": "VLAN135", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "136", + "vlan_name": "vlan136", + "status": "active", + "interfaces": [ + "Po29", + "Po43", + "Po45", + "Eth1/22", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/43", + "Eth1/44", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "160", + "vlan_name": "id160", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/23", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "176", + "vlan_name": "vlan176", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/23", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "192", + "vlan_name": "vlan192", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/23", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "200", + "vlan_name": "data", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/5", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "201", + "vlan_name": "fw", + "status": "active", + "interfaces": [ + "Po6", + "Po29", + "Po37", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "202", + "vlan_name": "VLAN0202", + "status": "active", + "interfaces": [ + "Po29", + "Po35", + "Po37", + "Po43", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/35", + "Eth1/36", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/43", + "Eth1/44", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "209", + "vlan_name": "abc", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "210", + "vlan_name": "Mgmt.FW", + "status": "active", + "interfaces": [ + "Po29", + "Po35", + "Po36", + "Po43", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/35", + "Eth1/36", + "Eth1/43", + "Eth1/44" + ] + }, + { + "vlan_id": "214", + "vlan_name": "inter", + "status": "active", + "interfaces": [ + "Po29", + "Po35", + "Po43", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/35", + "Eth1/36", + "Eth1/43", + "Eth1/44", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "215", + "vlan_name": "vmware", + "status": "active", + "interfaces": [ + "Po7", + "Po29", + "Po37", + "Po45", + "Eth1/7", + "Eth1/8", + "Eth1/9", + "Eth1/10", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "216", + "vlan_name": "VLAN0216", + "status": "active", + "interfaces": [ + "Po7", + "Po29", + "Po37", + "Po45", + "Eth1/7", + "Eth1/8", + "Eth1/9", + "Eth1/10", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "218", + "vlan_name": "dns", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "219", + "vlan_name": "v219", + "status": "active", + "interfaces": [ + "Po3", + "Po7", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/7", + "Eth1/8", + "Eth1/9", + "Eth1/10", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "220", + "vlan_name": "v220", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "345", + "vlan_name": "vlan345", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "350", + "vlan_name": "vlan350", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "857", + "vlan_name": "VLAN857", + "status": "active", + "interfaces": [ + "Po3", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27" + ] + }, + { + "vlan_id": "1200", + "vlan_name": "servers", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3002", + "vlan_name": "oob", + "status": "active", + "interfaces": [ + "Po29", + "Po37", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3030", + "vlan_name": "storage", + "status": "active", + "interfaces": [ + "Po7", + "Po29", + "Po37", + "Po45", + "Eth1/7", + "Eth1/8", + "Eth1/9", + "Eth1/10", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3085", + "vlan_name": "Servers", + "status": "active", + "interfaces": [ + "Po29", + "Po33", + "Po37", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/33", + "Eth1/34", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3100", + "vlan_name": "v3100", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3101", + "vlan_name": "v3101", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3105", + "vlan_name": "VLAN3105", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3110", + "vlan_name": "STORE", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3111", + "vlan_name": "STORAGE", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3112", + "vlan_name": "DATA", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3120", + "vlan_name": "vmware", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3121", + "vlan_name": "VLAN3121", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3122", + "vlan_name": "vLan3122", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3130", + "vlan_name": "data", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3131", + "vlan_name": "host", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3146", + "vlan_name": "VLAN3146", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3160", + "vlan_name": "virtuals", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3179", + "vlan_name": "v3179", + "status": "active", + "interfaces": [ + "Po3", + "Po29", + "Po37", + "Po45", + "Eth1/3", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3210", + "vlan_name": "svc", + "status": "active", + "interfaces": [ + "Po29", + "Po33", + "Po37", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/33", + "Eth1/34", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3214", + "vlan_name": "mgm", + "status": "active", + "interfaces": [ + "Po29", + "Po33", + "Po37", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/33", + "Eth1/34", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + }, + { + "vlan_id": "3215", + "vlan_name": "mgmt", + "status": "active", + "interfaces": [ + "Po29", + "Po33", + "Po37", + "Po45", + "Eth1/25", + "Eth1/26", + "Eth1/27", + "Eth1/29", + "Eth1/30", + "Eth1/31", + "Eth1/32", + "Eth1/33", + "Eth1/34", + "Eth1/37", + "Eth1/38", + "Eth1/39", + "Eth1/40", + "Eth1/45", + "Eth1/46", + "Eth1/47", + "Eth1/48" + ] + } + ], + "show interface switchport": [ + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/3", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "65-68,70-72,135,218-219", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/4", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "200", + "ACCESS_VLAN_NAME": "146.27.111.16/29.3RD-FW", + "INTERFACE": "Ethernet1/5", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "201", + "ACCESS_VLAN_NAME": "146.27.73.0/29.ForensicFW", + "INTERFACE": "Ethernet1/6", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/7", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "68,215-216,219,3030", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/8", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "68,215-216,219,3030", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/9", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "68,215-216,219,3030", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/10", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "68,215-216,219,3030", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/11", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/12", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/13", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/14", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/15", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/16", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/17", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/18", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/19", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/20", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/21", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "136", + "ACCESS_VLAN_NAME": "144.5.136.0/24-RTSN.Interconnect", + "INTERFACE": "Ethernet1/22", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/23", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "64,110,115,128,160,176,192", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "67", + "ACCESS_VLAN_NAME": "146.27.67.0/24", + "INTERFACE": "Ethernet1/24", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/25", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/26", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/27", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/29", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "851-856", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/30", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "851-856", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/31", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "851-856", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/32", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "851-856", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/33", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "3085,3210,3214-3215", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/34", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "3085,3210,3214-3215", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/35", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "202,210,214", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/36", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "202,210,214", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/37", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-9,211-213", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/38", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-9,211-213", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/39", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-9,211-213", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/40", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-9,211-213", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/43", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "10,136,202,210,214", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/44", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "10,136,202,210,214", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/45", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1,209-211", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/46", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1,209-211", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/47", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1,209-211", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/48", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1,209-211", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/49", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/50", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/51", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/52", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/53", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "68", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "Ethernet1/54", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "port-channel3", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "65-68,70-72", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "201", + "ACCESS_VLAN_NAME": "146.27.73.0/29.ForensicFW", + "INTERFACE": "port-channel6", + "MODE": "access", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-4094", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "port-channel7", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "68,215-216,219,3030", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "port-channel29", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "851-856", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "port-channel33", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "3085,3210,3214-3215", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "port-channel35", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "202,210,214", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "port-channel36", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "210", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "port-channel37", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1-9,211-213", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "port-channel43", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "10,136,202,210,214", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "port-channel45", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "1,209-211", + "VOICE_VLAN": "none" + }, + { + "ACCESS_VLAN": "1", + "ACCESS_VLAN_NAME": "default", + "INTERFACE": "port-channel53", + "MODE": "trunk", + "NATIVE_VLAN": "1", + "NATIVE_VLAN_NAME": "default", + "SWITCHPORT": "Enabled", + "SWITCHPORT_MONITOR": "Not enabled", + "TRUNKING_VLANS": "68", + "VOICE_VLAN": "none" + } + ] +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_devices/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_devices/expected_result_1.json new file mode 100755 index 00000000..c633518e --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_devices/expected_result_1.json @@ -0,0 +1,7 @@ +{ + "device_type": "Nexus9000 C9372PX chassis", + "hostname": "N9k-01", + "mask_length": 24, + "mgmt_interface": "mgmt0", + "serial": "FDO20432435" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_all/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_all/expected_result_1.json new file mode 100755 index 00000000..9e26dfee --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_all/expected_result_1.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_no_options/expected_result_1-old.json b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_no_options/expected_result_1-old.json new file mode 100644 index 00000000..f41a842c --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_no_options/expected_result_1-old.json @@ -0,0 +1,2405 @@ +{ + "interfaces": { + "Ethernet1/1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/1.1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.22.246", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/10": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f5", + "mtu": "9216", + "tagged_vlans": [] + }, + "Ethernet1/11": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f6", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/12": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f7", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/13": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f8", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/14": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f9", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/15": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fa", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/16": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/17": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fc", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/18": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fd", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/19": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fe", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/2": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/2.1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.22.250", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/20": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ff", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/21": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a00", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/22": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a01", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "136", + "name": "vlan136" + } + }, + "Ethernet1/23": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a02", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "64", + "name": "vlan64" + }, + { + "id": "110", + "name": "vid110" + }, + { + "id": "115", + "name": "v115" + }, + { + "id": "128", + "name": "vlan128" + }, + { + "id": "160", + "name": "id160" + }, + { + "id": "176", + "name": "vlan176" + }, + { + "id": "192", + "name": "vlan192" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/24": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a03", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "67", + "name": "vlan67" + } + }, + "Ethernet1/25": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a04", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/26": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a05", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/27": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a06", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/28": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/28.2": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.16.0.2", + "prefix_length": "31" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/29": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a08", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/3": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ee", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "65", + "name": "vlan65" + }, + { + "id": "66", + "name": "vlan66" + }, + { + "id": "67", + "name": "vlan67" + }, + { + "id": "68", + "name": "vlan68" + }, + { + "id": "70", + "name": "vlan70" + }, + { + "id": "71", + "name": "vlan71" + }, + { + "id": "72", + "name": "vlan72" + }, + { + "id": "135", + "name": "VLAN135" + }, + { + "id": "218", + "name": "dns" + }, + { + "id": "219", + "name": "v219" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/30": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a09", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/31": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0a", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/32": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0b", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/33": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0c", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "3085", + "name": "Servers" + }, + { + "id": "3210", + "name": "svc" + }, + { + "id": "3214", + "name": "mgm" + }, + { + "id": "3215", + "name": "mgmt" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/34": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0d", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "3085", + "name": "Servers" + }, + { + "id": "3210", + "name": "svc" + }, + { + "id": "3214", + "name": "mgm" + }, + { + "id": "3215", + "name": "mgmt" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/35": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0e", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/36": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0f", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/37": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a10", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/38": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a11", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/39": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a12", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ef", + "mtu": "9216", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/40": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a13", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/42": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/43": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a16", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "10", + "name": "vlan10" + }, + { + "id": "136", + "name": "vlan136" + }, + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/44": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a17", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "10", + "name": "vlan10" + }, + { + "id": "136", + "name": "vlan136" + }, + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/45": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a18", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/46": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a19", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/47": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a1a", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/48": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a1b", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/49": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1c", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f0", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "200", + "name": "data" + } + }, + "Ethernet1/50": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1d", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/51": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1e", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/52": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1f", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/53": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a20", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + } + ], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/54": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a21", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f1", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "201", + "name": "fw" + } + }, + "Ethernet1/7": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f2", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/8": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f3", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/9": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f4", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan110": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.1.67", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan115": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.1.83", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan128": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.133", + "prefix_length": "27" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan135": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.135.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan136": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "144.5.136.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan160": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.174", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan176": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.190", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan192": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.198", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan200": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.19", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan201": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.73.3", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan202": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.42", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan210": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.98", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan214": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.3", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan215": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.57.131", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan216": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.57.195", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan218": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.218.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan219": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.219.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan220": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.59.243", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan3112": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.22.32.1", + "prefix_length": "21" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "9216", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan3130": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.22.8.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan3146": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.197.131", + "prefix_length": "25" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan345": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.5.174", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan350": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.137.3", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan63": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.63.3", + "prefix_length": "25" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "9216", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan64": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.126", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan66": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.66.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan67": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.67.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan68": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.68.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan70": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.70.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan71": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.71.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan72": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.72.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "loopback0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.247", + "prefix_length": "32" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "mgmt0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99e4", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "port-channel29": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0a", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel3": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "65", + "name": "vlan65" + }, + { + "id": "66", + "name": "vlan66" + }, + { + "id": "67", + "name": "vlan67" + }, + { + "id": "68", + "name": "vlan68" + }, + { + "id": "70", + "name": "vlan70" + }, + { + "id": "71", + "name": "vlan71" + }, + { + "id": "72", + "name": "vlan72" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel33": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0c", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "3085", + "name": "Servers" + }, + { + "id": "3210", + "name": "svc" + }, + { + "id": "3214", + "name": "mgm" + }, + { + "id": "3215", + "name": "mgmt" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel35": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0e", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel36": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "210", + "name": "Mgmt.FW" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel37": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a10", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.1.0.2", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": {} + }, + "port-channel43": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a16", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "10", + "name": "vlan10" + }, + { + "id": "136", + "name": "vlan136" + }, + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel45": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a18", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel53": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f1", + "mtu": "1500", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": { + "id": "201", + "name": "fw" + } + }, + "port-channel7": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f3", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + } + }, + "serial": "FDO20432435" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_no_options/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_no_options/expected_result_1.json new file mode 100644 index 00000000..4ab8d5c0 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_no_options/expected_result_1.json @@ -0,0 +1,1220 @@ +{ + "serial": "FDO20432435", + "interfaces": { + "Ethernet1/1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/1.1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.22.246", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/10": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f5", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/11": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f6", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/12": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f7", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/13": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f8", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/14": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f9", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/15": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fa", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/16": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fb", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/17": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fc", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/18": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fd", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/19": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fe", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/2": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/2.1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.22.250", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/20": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ff", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/21": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a00", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/22": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a01", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/23": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a02", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/24": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a03", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/25": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a04", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/26": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a05", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/27": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a06", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/28": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/28.2": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.16.0.2", + "prefix_length": "31" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/29": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a08", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/3": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ee", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/30": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a09", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/31": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0a", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/32": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0b", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/33": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0c", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/34": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0d", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/35": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0e", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/36": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0f", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/37": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a10", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/38": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a11", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/39": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a12", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ef", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/40": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a13", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/42": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/43": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a16", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/44": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a17", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/45": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a18", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/46": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a19", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/47": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a1a", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/48": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a1b", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/49": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1c", + "mtu": "1500", + "type": "other" + }, + "Ethernet1/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f0", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/50": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1d", + "mtu": "1500", + "type": "other" + }, + "Ethernet1/51": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1e", + "mtu": "1500", + "type": "other" + }, + "Ethernet1/52": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1f", + "mtu": "1500", + "type": "other" + }, + "Ethernet1/53": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a20", + "mtu": "9216", + "type": "other" + }, + "Ethernet1/54": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a21", + "mtu": "1500", + "type": "other" + }, + "Ethernet1/6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f1", + "mtu": "1500", + "type": "1000base-t" + }, + "Ethernet1/7": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f2", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/8": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f3", + "mtu": "9216", + "type": "1000base-t" + }, + "Ethernet1/9": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f4", + "mtu": "9216", + "type": "1000base-t" + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan110": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.1.67", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan115": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.1.83", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan128": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.133", + "prefix_length": "27" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan135": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.135.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan136": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "144.5.136.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan160": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.174", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan176": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.190", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan192": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.198", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan200": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.19", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan201": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.73.3", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan202": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.42", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan210": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.98", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan214": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.3", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan215": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.57.131", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan216": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.57.195", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan218": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.218.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan219": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.219.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan220": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.59.243", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan3112": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.22.32.1", + "prefix_length": "21" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "9216", + "type": "virtual" + }, + "Vlan3130": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.22.8.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan3146": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.197.131", + "prefix_length": "25" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan345": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.5.174", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan350": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.137.3", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan63": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.63.3", + "prefix_length": "25" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "9216", + "type": "virtual" + }, + "Vlan64": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.126", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan66": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.66.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan67": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.67.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan68": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.68.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan70": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.70.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan71": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.71.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "Vlan72": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.72.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual" + }, + "loopback0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.247", + "prefix_length": "32" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "mgmt0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99e4", + "mtu": "1500", + "type": "other" + }, + "port-channel29": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0a", + "mtu": "9216", + "type": "lag" + }, + "port-channel3": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "1500", + "type": "lag" + }, + "port-channel33": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0c", + "mtu": "1500", + "type": "lag" + }, + "port-channel35": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0e", + "mtu": "1500", + "type": "lag" + }, + "port-channel36": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "1500", + "type": "lag" + }, + "port-channel37": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a10", + "mtu": "9216", + "type": "lag" + }, + "port-channel41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.1.0.2", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "lag" + }, + "port-channel43": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a16", + "mtu": "1500", + "type": "lag" + }, + "port-channel45": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a18", + "mtu": "9216", + "type": "lag" + }, + "port-channel53": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "9216", + "type": "lag" + }, + "port-channel6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f1", + "mtu": "1500", + "type": "lag" + }, + "port-channel7": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f3", + "mtu": "9216", + "type": "lag" + } + } +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_with_cables/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_with_cables/expected_result_1.json new file mode 100644 index 00000000..beff3316 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_with_cables/expected_result_1.json @@ -0,0 +1,2450 @@ +{ + "interfaces": { + "Ethernet1/1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/1.1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.22.246", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/10": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f5", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/11": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f6", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/12": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f7", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/13": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f8", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/14": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f9", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/15": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fa", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/16": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/17": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fc", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/18": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fd", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/19": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fe", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/2": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/2.1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.22.250", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/20": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ff", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/21": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a00", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/22": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a01", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "136", + "name": "vlan136" + } + }, + "Ethernet1/23": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a02", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "64", + "name": "vlan64" + }, + { + "id": "110", + "name": "vid110" + }, + { + "id": "115", + "name": "v115" + }, + { + "id": "128", + "name": "vlan128" + }, + { + "id": "160", + "name": "id160" + }, + { + "id": "176", + "name": "vlan176" + }, + { + "id": "192", + "name": "vlan192" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/24": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a03", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "67", + "name": "vlan67" + } + }, + "Ethernet1/25": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a04", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/26": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a05", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/27": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a06", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/28": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/28.2": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.16.0.2", + "prefix_length": "31" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/29": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a08", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/3": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ee", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "65", + "name": "vlan65" + }, + { + "id": "66", + "name": "vlan66" + }, + { + "id": "67", + "name": "vlan67" + }, + { + "id": "68", + "name": "vlan68" + }, + { + "id": "70", + "name": "vlan70" + }, + { + "id": "71", + "name": "vlan71" + }, + { + "id": "72", + "name": "vlan72" + }, + { + "id": "135", + "name": "VLAN135" + }, + { + "id": "218", + "name": "dns" + }, + { + "id": "219", + "name": "v219" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/30": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a09", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/31": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0a", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/32": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0b", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/33": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0c", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "3085", + "name": "Servers" + }, + { + "id": "3210", + "name": "svc" + }, + { + "id": "3214", + "name": "mgm" + }, + { + "id": "3215", + "name": "mgmt" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/34": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0d", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "3085", + "name": "Servers" + }, + { + "id": "3210", + "name": "svc" + }, + { + "id": "3214", + "name": "mgm" + }, + { + "id": "3215", + "name": "mgmt" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/35": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0e", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/36": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0f", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/37": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a10", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/38": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a11", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/39": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a12", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ef", + "mtu": "9216", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/40": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a13", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/42": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/43": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a16", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "10", + "name": "vlan10" + }, + { + "id": "136", + "name": "vlan136" + }, + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/44": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a17", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "10", + "name": "vlan10" + }, + { + "id": "136", + "name": "vlan136" + }, + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/45": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a18", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/46": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a19", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/47": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a1a", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/48": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a1b", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/49": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1c", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f0", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "200", + "name": "data" + } + }, + "Ethernet1/50": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1d", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/51": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1e", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/52": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1f", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/53": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a20", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + } + ], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/54": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a21", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f1", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "201", + "name": "fw" + } + }, + "Ethernet1/7": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f2", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/8": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f3", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/9": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f4", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan110": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.1.67", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan115": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.1.83", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan128": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.133", + "prefix_length": "27" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan135": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.135.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan136": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "144.5.136.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan160": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.174", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan176": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.190", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan192": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.198", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan200": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.19", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan201": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.73.3", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan202": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.42", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan210": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.98", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan214": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.3", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan215": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.57.131", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan216": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.57.195", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan218": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.218.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan219": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.219.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan220": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.59.243", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan3112": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.22.32.1", + "prefix_length": "21" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "9216", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan3130": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.22.8.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan3146": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.197.131", + "prefix_length": "25" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan345": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.5.174", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan350": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.137.3", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan63": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.63.3", + "prefix_length": "25" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "9216", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan64": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.126", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan66": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.66.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan67": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.67.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan68": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.68.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan70": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.70.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan71": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.71.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan72": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.72.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "loopback0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.247", + "prefix_length": "32" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "mgmt0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99e4", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "port-channel29": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0a", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel3": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "65", + "name": "vlan65" + }, + { + "id": "66", + "name": "vlan66" + }, + { + "id": "67", + "name": "vlan67" + }, + { + "id": "68", + "name": "vlan68" + }, + { + "id": "70", + "name": "vlan70" + }, + { + "id": "71", + "name": "vlan71" + }, + { + "id": "72", + "name": "vlan72" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel33": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0c", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "3085", + "name": "Servers" + }, + { + "id": "3210", + "name": "svc" + }, + { + "id": "3214", + "name": "mgm" + }, + { + "id": "3215", + "name": "mgmt" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel35": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0e", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel36": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "210", + "name": "Mgmt.FW" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel37": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a10", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.1.0.2", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": {} + }, + "port-channel43": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a16", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "10", + "name": "vlan10" + }, + { + "id": "136", + "name": "vlan136" + }, + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel45": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a18", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel53": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f1", + "mtu": "1500", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": { + "id": "201", + "name": "fw" + } + }, + "port-channel7": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f3", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + } + }, + "serial": "FDO20432435", + "cables": [ + { + "remote_device": "demo-cisco-2", + "local_interface": "GigabitEthernet1", + "remote_interface": "GigabitEthernet1" + }, + { + "remote_device": "demo-cisco-3", + "local_interface": "GigabitEthernet2", + "remote_interface": "GigabitEthernet2" + }, + { + "remote_device": "demo-cisco-4", + "local_interface": "GigabitEthernet3", + "remote_interface": "GigabitEthernet3" + } + ] +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_with_vlans/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_with_vlans/expected_result_1.json new file mode 100755 index 00000000..a187166b --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_with_vlans/expected_result_1.json @@ -0,0 +1,2433 @@ +{ + "interfaces": { + "Ethernet1/1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/1.1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.22.246", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/10": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f5", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/11": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f6", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/12": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f7", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/13": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f8", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/14": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f9", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/15": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fa", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/16": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/17": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fc", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/18": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fd", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/19": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fe", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/2": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/2.1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.22.250", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/20": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ff", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/21": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a00", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/22": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a01", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "136", + "name": "vlan136" + } + }, + "Ethernet1/23": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a02", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "64", + "name": "vlan64" + }, + { + "id": "110", + "name": "vid110" + }, + { + "id": "115", + "name": "v115" + }, + { + "id": "128", + "name": "vlan128" + }, + { + "id": "160", + "name": "id160" + }, + { + "id": "176", + "name": "vlan176" + }, + { + "id": "192", + "name": "vlan192" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/24": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a03", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "67", + "name": "vlan67" + } + }, + "Ethernet1/25": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a04", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/26": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a05", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/27": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a06", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/28": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/28.2": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.16.0.2", + "prefix_length": "31" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/29": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a08", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/3": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ee", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "65", + "name": "vlan65" + }, + { + "id": "66", + "name": "vlan66" + }, + { + "id": "67", + "name": "vlan67" + }, + { + "id": "68", + "name": "vlan68" + }, + { + "id": "70", + "name": "vlan70" + }, + { + "id": "71", + "name": "vlan71" + }, + { + "id": "72", + "name": "vlan72" + }, + { + "id": "135", + "name": "VLAN135" + }, + { + "id": "218", + "name": "dns" + }, + { + "id": "219", + "name": "v219" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/30": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a09", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/31": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0a", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/32": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0b", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/33": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0c", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "3085", + "name": "Servers" + }, + { + "id": "3210", + "name": "svc" + }, + { + "id": "3214", + "name": "mgm" + }, + { + "id": "3215", + "name": "mgmt" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/34": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0d", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "3085", + "name": "Servers" + }, + { + "id": "3210", + "name": "svc" + }, + { + "id": "3214", + "name": "mgm" + }, + { + "id": "3215", + "name": "mgmt" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/35": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0e", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/36": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0f", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/37": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a10", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/38": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a11", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/39": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a12", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ef", + "mtu": "9216", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/40": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a13", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/42": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "Ethernet1/43": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a16", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "10", + "name": "vlan10" + }, + { + "id": "136", + "name": "vlan136" + }, + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/44": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a17", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "10", + "name": "vlan10" + }, + { + "id": "136", + "name": "vlan136" + }, + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/45": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a18", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/46": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a19", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/47": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a1a", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/48": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a1b", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/49": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1c", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f0", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "200", + "name": "data" + } + }, + "Ethernet1/50": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1d", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/51": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1e", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/52": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1f", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/53": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a20", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + } + ], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/54": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a21", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f1", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "201", + "name": "fw" + } + }, + "Ethernet1/7": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f2", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/8": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f3", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Ethernet1/9": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f4", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan110": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.1.67", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan115": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.1.83", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan128": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.133", + "prefix_length": "27" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan135": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.135.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan136": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "144.5.136.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan160": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.174", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan176": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.190", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan192": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.198", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan200": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.19", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan201": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.73.3", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan202": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.42", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan210": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.98", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan214": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.3", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan215": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.57.131", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan216": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.57.195", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan218": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.218.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan219": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.219.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan220": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.59.243", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan3112": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.22.32.1", + "prefix_length": "21" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "9216", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan3130": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.22.8.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan3146": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.197.131", + "prefix_length": "25" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan345": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.5.174", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan350": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.137.3", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan63": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.63.3", + "prefix_length": "25" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "9216", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan64": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.126", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan66": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.66.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan67": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.67.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan68": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.68.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan70": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.70.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan71": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.71.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan72": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.72.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "loopback0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.247", + "prefix_length": "32" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "mgmt0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99e4", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "port-channel29": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0a", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "851", + "name": "VLAN0851" + }, + { + "id": "852", + "name": "VLAN0852" + }, + { + "id": "853", + "name": "VLAN0853" + }, + { + "id": "854", + "name": "VLAN0854" + }, + { + "id": "855", + "name": "VLAN0855" + }, + { + "id": "856", + "name": "VLAN0856" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel3": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "65", + "name": "vlan65" + }, + { + "id": "66", + "name": "vlan66" + }, + { + "id": "67", + "name": "vlan67" + }, + { + "id": "68", + "name": "vlan68" + }, + { + "id": "70", + "name": "vlan70" + }, + { + "id": "71", + "name": "vlan71" + }, + { + "id": "72", + "name": "vlan72" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel33": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0c", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "3085", + "name": "Servers" + }, + { + "id": "3210", + "name": "svc" + }, + { + "id": "3214", + "name": "mgm" + }, + { + "id": "3215", + "name": "mgmt" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel35": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0e", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel36": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "210", + "name": "Mgmt.FW" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel37": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a10", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "2", + "name": "VLAN0002" + }, + { + "id": "3", + "name": "VLAN0003" + }, + { + "id": "4", + "name": "VLAN0004" + }, + { + "id": "5", + "name": "VLAN0005" + }, + { + "id": "6", + "name": "VLAN0006" + }, + { + "id": "7", + "name": "VLAN0007" + }, + { + "id": "8", + "name": "VLAN0008" + }, + { + "id": "9", + "name": "VLAN0009" + }, + { + "id": "211", + "name": "VLAN0211" + }, + { + "id": "212", + "name": "VLAN0212" + }, + { + "id": "213", + "name": "VLAN0213" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.1.0.2", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": {} + }, + "port-channel43": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a16", + "mtu": "1500", + "tagged_vlans": [ + { + "id": "10", + "name": "vlan10" + }, + { + "id": "136", + "name": "vlan136" + }, + { + "id": "202", + "name": "VLAN0202" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "214", + "name": "inter" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel45": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a18", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "1", + "name": "default" + }, + { + "id": "209", + "name": "abc" + }, + { + "id": "210", + "name": "Mgmt.FW" + }, + { + "id": "211", + "name": "VLAN0211" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel53": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "port-channel6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f1", + "mtu": "1500", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": { + "id": "201", + "name": "fw" + } + }, + "port-channel7": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f3", + "mtu": "9216", + "tagged_vlans": [ + { + "id": "68", + "name": "vlan68" + }, + { + "id": "215", + "name": "vmware" + }, + { + "id": "216", + "name": "VLAN0216" + }, + { + "id": "219", + "name": "v219" + }, + { + "id": "3030", + "name": "storage" + } + ], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + } + }, + "serial": "FDO20432435" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_with_vrfs/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_with_vrfs/expected_result_1.json new file mode 100755 index 00000000..c6ec071b --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_nxos/sync_network_data_with_vrfs/expected_result_1.json @@ -0,0 +1,1405 @@ +{ + "interfaces": { + "Ethernet1/1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t", + "vrf": { + "name": "default" + } + }, + "Ethernet1/1.1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.22.246", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t", + "vrf": { + "name": "default" + } + }, + "Ethernet1/10": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f5", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/11": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f6", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/12": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f7", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/13": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f8", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/14": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f9", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/15": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fa", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/16": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fb", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/17": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fc", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/18": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fd", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/19": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99fe", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/2": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t", + "vrf": { + "name": "default" + } + }, + "Ethernet1/2.1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.22.250", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t", + "vrf": { + "name": "default" + } + }, + "Ethernet1/20": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ff", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/21": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a00", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/22": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a01", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/23": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a02", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/24": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a03", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/25": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a04", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/26": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a05", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/27": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a06", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/28": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t", + "vrf": { + "name": "default" + } + }, + "Ethernet1/28.2": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.16.0.2", + "prefix_length": "31" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t", + "vrf": { + "name": "default" + } + }, + "Ethernet1/29": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a08", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/3": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ee", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/30": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a09", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/31": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0a", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/32": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0b", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/33": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0c", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/34": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0d", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/35": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0e", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/36": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0f", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/37": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a10", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/38": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a11", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/39": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a12", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99ef", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/40": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a13", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/42": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/43": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a16", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/44": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a17", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/45": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a18", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/46": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a19", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/47": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a1a", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/48": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a1b", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/49": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1c", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Ethernet1/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99f0", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/50": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1d", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Ethernet1/51": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1e", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Ethernet1/52": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a1f", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Ethernet1/53": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a20", + "mtu": "9216", + "type": "other", + "vrf": {} + }, + "Ethernet1/54": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.9a21", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Ethernet1/6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f1", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/7": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f2", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/8": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f3", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Ethernet1/9": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f4", + "mtu": "9216", + "type": "1000base-t", + "vrf": {} + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan110": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.1.67", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan115": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.1.83", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan128": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.133", + "prefix_length": "27" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan135": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.135.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan136": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "144.5.136.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan160": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.174", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan176": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.190", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan192": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.198", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan200": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.19", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan201": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.73.3", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan202": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.42", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan210": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.98", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan214": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.3", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "Servers" + } + }, + "Vlan215": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.57.131", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan216": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.57.195", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan218": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.218.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan219": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.219.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan220": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.59.243", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan3112": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.22.32.1", + "prefix_length": "21" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "9216", + "type": "virtual", + "vrf": { + "name": "NFS" + } + }, + "Vlan3130": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "172.22.8.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan3146": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.197.131", + "prefix_length": "25" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan345": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.5.174", + "prefix_length": "28" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan350": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "139.65.137.3", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan63": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.63.3", + "prefix_length": "25" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "9216", + "type": "virtual", + "vrf": { + "name": "Servers" + } + }, + "Vlan64": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.34.6.126", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan66": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.66.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan67": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.67.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan68": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.68.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan70": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.70.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan71": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.71.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "Vlan72": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.72.3", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "virtual", + "vrf": { + "name": "default" + } + }, + "loopback0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.27.111.247", + "prefix_length": "32" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": { + "name": "default" + } + }, + "mgmt0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99e4", + "mtu": "1500", + "type": "other", + "vrf": { + "name": "management" + } + }, + "port-channel29": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0a", + "mtu": "9216", + "type": "lag", + "vrf": {} + }, + "port-channel3": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "1500", + "type": "lag", + "vrf": {} + }, + "port-channel33": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0c", + "mtu": "1500", + "type": "lag", + "vrf": {} + }, + "port-channel35": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a0e", + "mtu": "1500", + "type": "lag", + "vrf": {} + }, + "port-channel36": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "1500", + "type": "lag", + "vrf": {} + }, + "port-channel37": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a10", + "mtu": "9216", + "type": "lag", + "vrf": {} + }, + "port-channel41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.1.0.2", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99eb", + "mtu": "1500", + "type": "lag", + "vrf": { + "name": "default" + } + }, + "port-channel43": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a16", + "mtu": "1500", + "type": "lag", + "vrf": {} + }, + "port-channel45": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.9a18", + "mtu": "9216", + "type": "lag", + "vrf": {} + }, + "port-channel53": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "False", + "mac_address": "0000.0000.0000", + "mtu": "9216", + "type": "lag", + "vrf": {} + }, + "port-channel6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f1", + "mtu": "1500", + "type": "lag", + "vrf": {} + }, + "port-channel7": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [], + "lag": "", + "link_status": "True", + "mac_address": "286f.7f7e.99f3", + "mtu": "9216", + "type": "lag", + "vrf": {} + } + }, + "serial": "FDO20432435" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_wlc/command_getter_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_wlc/command_getter_result_1.json new file mode 100755 index 00000000..a5de3902 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_wlc/command_getter_result_1.json @@ -0,0 +1,45 @@ +{ + "show interface detailed management": [ + { + "gateway": "14.36.4.193", + "interface_name": "management", + "ip_address": "14.36.4.194", + "mac_address": "00:5d:73:da:e3:2b", + "netmask": "255.255.255.240", + "primary_dhcp_server": "14.36.82.34", + "secondary_dhcp_server": "14.36.80.34" + } + ], + "show inventory": [ + { + "bia": "00:5D:73:DA:E3:23", + "description": "Cisco 5520 Wireless Controller", + "max_ap_num": "1500", + "name": "Chassis", + "pid": "AIR-CT5520-K9", + "sn": "FCH2145V28L", + "vid": "V01" + } + ], + "show sysinfo": [ + { + "bootloader_version": "8.3.15.177", + "build_type": "DATA + WPS", + "configured_country": "Multiple Countries : BE,US", + "field_recovery_image_version": "", + "firmware_version": "", + "ip_address": "14.36.4.194", + "last_reset": "", + "mac_address": "00:5D:73:DA:E3:23", + "maximum_aps": "1500", + "number_active_clients": "58", + "number_wlans": "7", + "product_version": "8.10.185.0", + "system_contact": "Dan and Jake", + "system_location": "Dallas, Texas / United States / Americas", + "system_name": "ABCWC-01", + "system_timezone_location": "(GMT -6:00) Central Time (US and Canada)", + "system_up_time": "269 days 3 hrs 35 mins 31 secs" + } + ] +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_wlc/sync_devices/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_wlc/sync_devices/expected_result_1.json new file mode 100755 index 00000000..7ea657e9 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_wlc/sync_devices/expected_result_1.json @@ -0,0 +1,5 @@ +{"device_type": "AIR-CT5520-K9", + "hostname": "ABCWC-01", + "mask_length": 28, + "mgmt_interface": "management", + "serial": "FCH2145V28L"} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_xe/command_getter_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_xe/command_getter_result_1.json new file mode 100644 index 00000000..e7c44c7b --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_xe/command_getter_result_1.json @@ -0,0 +1,2830 @@ +{ + "show version": [ + { + "software_image": "X86_64_LINUX_IOSD-UNIVERSALK9-M", + "version": "16.9.4", + "release": "fc2", + "rommon": "IOS-XE", + "hostname": "ISR-XE-01", + "uptime": "23 weeks, 1 day, 2 hours, 11 minutes", + "uptime_years": "", + "uptime_weeks": "23", + "uptime_days": "1", + "uptime_hours": "2", + "uptime_minutes": "11", + "reload_reason": "Reload Command", + "running_image": "isr4300-universalk9.16.09.04.SPA.bin", + "hardware": [ + "ISR4331/K9" + ], + "serial": [ + "FLM241611GV" + ], + "config_register": "0x2102", + "mac_address": [], + "restarted": "15:01:04 UTC Thu Dec 21 2023" + } + ], + "show interfaces": [ + { + "interface": "GigabitEthernet0/0/0", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "ISR4331-3x1GE", + "mac_address": "ac3a.6789.5d40", + "bia": "ac3a.6789.5d40", + "description": "isr description", + "ip_address": "10.39.67.234", + "prefix_length": "30", + "mtu": "1500", + "duplex": "Full Duplex", + "speed": "100Mbps", + "media_type": "RJ45", + "bandwidth": "60000 Kbit", + "delay": "100 usec", + "encapsulation": "ARPA", + "last_input": "00:00:00", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "8526000", + "output_rate": "1709000", + "input_pps": "1074", + "output_pps": "643", + "input_packets": "6048364297", + "output_packets": "4226892804", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/0/1", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "ISR4331-3x1GE", + "mac_address": "ac3a.6789.5d41", + "bia": "ac3a.6789.5d41", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full Duplex", + "speed": "1000Mbps", + "media_type": "RJ45", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "802.1Q Virtual LAN", + "last_input": "00:00:00", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "2055000", + "output_rate": "5820000", + "input_pps": "667", + "output_pps": "878", + "input_packets": "5374499091", + "output_packets": "6245799571", + "runts": "0", + "giants": "0", + "input_errors": "1296", + "crc": "0", + "frame": "0", + "overrun": "1296", + "abort": "", + "output_errors": "0", + "vlan_id": "1", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/0/1.100", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "ISR4331-3x1GE", + "mac_address": "ac3a.6789.5d41", + "bia": "ac3a.6789.5d41", + "description": "isr description", + "ip_address": "10.39.67.1", + "prefix_length": "25", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "802.1Q Virtual LAN", + "last_input": "", + "last_output": "", + "last_output_hang": "", + "queue_strategy": "", + "input_rate": "", + "output_rate": "", + "input_pps": "", + "output_pps": "", + "input_packets": "", + "output_packets": "", + "runts": "", + "giants": "", + "input_errors": "", + "crc": "", + "frame": "", + "overrun": "", + "abort": "", + "output_errors": "", + "vlan_id": "100", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/0/1.200", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "ISR4331-3x1GE", + "mac_address": "ac3a.6789.5d41", + "bia": "ac3a.6789.5d41", + "description": "isr description", + "ip_address": "10.41.238.129", + "prefix_length": "26", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "802.1Q Virtual LAN", + "last_input": "", + "last_output": "", + "last_output_hang": "", + "queue_strategy": "", + "input_rate": "", + "output_rate": "", + "input_pps": "", + "output_pps": "", + "input_packets": "", + "output_packets": "", + "runts": "", + "giants": "", + "input_errors": "", + "crc": "", + "frame": "", + "overrun": "", + "abort": "", + "output_errors": "", + "vlan_id": "200", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/0/1.300", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "ISR4331-3x1GE", + "mac_address": "ac3a.6789.5d41", + "bia": "ac3a.6789.5d41", + "description": "isr description", + "ip_address": "10.39.67.209", + "prefix_length": "29", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "802.1Q Virtual LAN", + "last_input": "", + "last_output": "", + "last_output_hang": "", + "queue_strategy": "", + "input_rate": "", + "output_rate": "", + "input_pps": "", + "output_pps": "", + "input_packets": "", + "output_packets": "", + "runts": "", + "giants": "", + "input_errors": "", + "crc": "", + "frame": "", + "overrun": "", + "abort": "", + "output_errors": "", + "vlan_id": "300", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/0/2", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "ISR4331-3x1GE", + "mac_address": "ac3a.6789.5d42", + "bia": "ac3a.6789.5d42", + "description": "isr description", + "ip_address": "10.39.67.217", + "prefix_length": "30", + "mtu": "1500", + "duplex": "Full Duplex", + "speed": "1000Mbps", + "media_type": "LX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:01", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "568000", + "output_rate": "3692000", + "input_pps": "215", + "output_pps": "442", + "input_packets": "1938320602", + "output_packets": "2741863078", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Service-Engine0/1/0", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "PVDM4-64", + "mac_address": "cc70.ed3b.0716", + "bia": "cc70.ed3b.0716", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "750000 Kbit", + "delay": "1000 usec", + "encapsulation": "DSP_SPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:0", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:1", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:2", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:3", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:4", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:5", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:6", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:7", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:8", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:9", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:10", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:11", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:12", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:13", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:14", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:15", + "link_status": "up", + "protocol_status": "up (spoofing)", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "00:00:03", + "last_output": "00:00:03", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "1882372", + "output_packets": "1884878", + "runts": "0", + "giants": "0", + "input_errors": "102", + "crc": "31", + "frame": "0", + "overrun": "0", + "abort": "71", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:16", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:17", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:18", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:19", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:20", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:21", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:22", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:23", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:24", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:25", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:26", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:27", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:28", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:29", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Serial0/1/0:30", + "link_status": "down", + "protocol_status": "down", + "hardware_type": "NIM-1MFT-T1", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "64 Kbit", + "delay": "20000 usec", + "encapsulation": "HDLC", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/2/0", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "NIM-ES2-8", + "mac_address": "ac3a.6789.5d50", + "bia": "ac3a.6789.5d50", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/2/1", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "NIM-ES2-8", + "mac_address": "ac3a.6789.5d51", + "bia": "ac3a.6789.5d51", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/2/2", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "NIM-ES2-8", + "mac_address": "ac3a.6789.5d52", + "bia": "ac3a.6789.5d52", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/2/3", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "NIM-ES2-8", + "mac_address": "ac3a.6789.5d53", + "bia": "ac3a.6789.5d53", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/2/4", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "NIM-ES2-8", + "mac_address": "ac3a.6789.5d54", + "bia": "ac3a.6789.5d54", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/2/5", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "NIM-ES2-8", + "mac_address": "ac3a.6789.5d55", + "bia": "ac3a.6789.5d55", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/2/6", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "NIM-ES2-8", + "mac_address": "ac3a.6789.5d56", + "bia": "ac3a.6789.5d56", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/2/7", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "NIM-ES2-8", + "mac_address": "ac3a.6789.5d57", + "bia": "ac3a.6789.5d57", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Service-Engine0/4/0", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "PVDM4-32", + "mac_address": "ac3a.6789.5d40", + "bia": "ac3a.6789.5d40", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "750000 Kbit", + "delay": "1000 usec", + "encapsulation": "DSP_SPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0", + "link_status": "administratively down", + "protocol_status": "down", + "hardware_type": "RP management port", + "mac_address": "ac3a.6789.5dcf", + "bia": "ac3a.6789.5dcf", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto Duplex", + "speed": "Auto Speed", + "media_type": "RJ45", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Loopback0", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "Loopback", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "198.51.100.1", + "prefix_length": "32", + "mtu": "1514", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "8000000 Kbit", + "delay": "5000 usec", + "encapsulation": "LOOPBACK", + "last_input": "00:00:05", + "last_output": "2d08h", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "1174885", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Tunnel0", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "Tunnel", + "mac_address": "", + "bia": "", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "9972", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "100 Kbit", + "delay": "50000 usec", + "encapsulation": "TUNNEL", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "62", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "0", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Vlan1", + "link_status": "up", + "protocol_status": "down , Autostate Enabled", + "hardware_type": "Ethernet SVI", + "mac_address": "ac3a.6789.5dc4", + "bia": "ac3a.6789.5dc4", + "description": "isr description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + } + ], + "show vlan": [ + { + "vlan_id": "1", + "vlan_name": "default", + "status": "active", + "interfaces": [ + "Gi0/2/0", + "Gi0/2/1", + "Gi0/2/2", + "Gi0/2/3", + "Gi0/2/4", + "Gi0/2/5", + "Gi0/2/6" + ] + }, + { + "vlan_id": "500", + "vlan_name": "VLAN0500", + "status": "active", + "interfaces": [ + "Gi0/2/7" + ] + }, + { + "vlan_id": "1002", + "vlan_name": "fddi-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1003", + "vlan_name": "token-ring-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1004", + "vlan_name": "fddinet-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1005", + "vlan_name": "trnet-default", + "status": "act/unsup", + "interfaces": [] + } + ], + "show interfaces switchport": [ + { + "interface": "Gi0/2/0", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/2/1", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/2/2", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/2/3", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/2/4", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/2/5", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/2/6", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi0/2/7", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "500", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + } + ], + "show etherchannel summary": [], + "show ip interface": [ + { + "interface": "GigabitEthernet0/0/0", + "link_status": "up", + "protocol_status": "up", + "ip_address": [ + "10.39.67.234" + ], + "prefix_length": [ + "30" + ], + "vrf": "", + "mtu": "1500", + "ip_helper": [ + "10.36.82.34" + ], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/0/1", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/0/1.100", + "link_status": "up", + "protocol_status": "up", + "ip_address": [ + "10.39.67.1" + ], + "prefix_length": [ + "25" + ], + "vrf": "", + "mtu": "1500", + "ip_helper": [ + "10.36.82.34", + "10.248.0.18" + ], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/0/1.200", + "link_status": "up", + "protocol_status": "up", + "ip_address": [ + "10.41.238.129" + ], + "prefix_length": [ + "26" + ], + "vrf": "", + "mtu": "1500", + "ip_helper": [ + "10.36.82.34", + "10.248.0.18" + ], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/0/1.300", + "link_status": "up", + "protocol_status": "up", + "ip_address": [ + "10.39.67.209" + ], + "prefix_length": [ + "29" + ], + "vrf": "", + "mtu": "1500", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/0/2", + "link_status": "up", + "protocol_status": "up", + "ip_address": [ + "10.39.67.217" + ], + "prefix_length": [ + "30" + ], + "vrf": "", + "mtu": "1500", + "ip_helper": [ + "10.36.82.34" + ], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Service-Engine0/1/0", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:0", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:1", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:2", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:3", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:4", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:5", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:6", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:7", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:8", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:9", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:10", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:11", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:12", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:13", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:14", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:15", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:16", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:17", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:18", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:19", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:20", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:21", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:22", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:23", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:24", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:25", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:26", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:27", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:28", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:29", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Serial0/1/0:30", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/2/0", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/2/1", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/2/2", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/2/3", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/2/4", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/2/5", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/2/6", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/2/7", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Service-Engine0/4/0", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0", + "link_status": "administratively down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Loopback0", + "link_status": "up", + "protocol_status": "up", + "ip_address": [ + "198.51.100.1" + ], + "prefix_length": [ + "32" + ], + "vrf": "", + "mtu": "1514", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Tunnel0", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "1472", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Vlan1", + "link_status": "up", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + } + ] +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_xe/command_getter_result_2.json b/nautobot_device_onboarding/tests/mock/cisco_xe/command_getter_result_2.json new file mode 100755 index 00000000..bff659be --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_xe/command_getter_result_2.json @@ -0,0 +1,7559 @@ +{ + "show vlan": [ + { + "vlan_id": "1", + "vlan_name": "default", + "status": "active", + "interfaces": [ + "Te1/0/2", + "Te2/0/2" + ] + }, + { + "vlan_id": "11", + "vlan_name": "v11", + "status": "active", + "interfaces": [ + "Gi1/0/1", + "Gi1/0/2", + "Gi1/0/3", + "Gi1/0/4", + "Gi1/0/5", + "Gi1/0/6", + "Gi1/0/7", + "Gi1/0/8", + "Gi1/0/9", + "Gi1/0/10", + "Gi1/0/11", + "Gi1/0/12", + "Gi1/0/13", + "Gi1/0/14", + "Gi1/0/15", + "Gi1/0/16", + "Gi1/0/17", + "Gi1/0/18", + "Gi1/0/19", + "Gi1/0/20", + "Gi1/0/21", + "Gi1/0/22", + "Gi1/0/23", + "Gi1/0/24", + "Gi1/0/25", + "Gi1/0/26", + "Gi1/0/27", + "Gi1/0/28", + "Gi1/0/29", + "Gi1/0/30", + "Gi1/0/31", + "Gi1/0/32", + "Gi1/0/33", + "Gi1/0/34", + "Gi1/0/35", + "Gi1/0/36", + "Gi1/0/37", + "Gi1/0/38", + "Gi1/0/39", + "Gi1/0/40", + "Gi1/0/41", + "Gi1/0/42", + "Gi1/0/43", + "Gi1/0/44", + "Gi1/0/46", + "Gi1/0/48", + "Gi2/0/1", + "Gi2/0/2", + "Gi2/0/3", + "Gi2/0/4", + "Gi2/0/5", + "Gi2/0/6", + "Gi2/0/7", + "Gi2/0/8", + "Gi2/0/9", + "Gi2/0/10", + "Gi2/0/11", + "Gi2/0/12", + "Gi2/0/13", + "Gi2/0/14", + "Gi2/0/15", + "Gi2/0/16", + "Gi2/0/17", + "Gi2/0/18", + "Gi2/0/19", + "Gi2/0/20", + "Gi2/0/21", + "Gi2/0/22", + "Gi2/0/23", + "Gi2/0/24", + "Gi2/0/25", + "Gi2/0/26", + "Gi2/0/27", + "Gi2/0/28", + "Gi2/0/29", + "Gi2/0/30", + "Gi2/0/31", + "Gi2/0/32", + "Gi2/0/33", + "Gi2/0/34", + "Gi2/0/35", + "Gi2/0/36", + "Gi2/0/37", + "Gi2/0/38", + "Gi2/0/39", + "Gi2/0/40", + "Gi2/0/41", + "Gi2/0/42", + "Gi2/0/43", + "Gi2/0/44", + "Gi2/0/45", + "Gi2/0/46", + "Gi2/0/47", + "Gi2/0/48" + ] + }, + { + "vlan_id": "12", + "vlan_name": "v12", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "13", + "vlan_name": "vl13", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "14", + "vlan_name": "vlan14", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "19", + "vlan_name": "vlan19", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "41", + "vlan_name": "vid41", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "50", + "vlan_name": "voice", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "60", + "vlan_name": "v60", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "80", + "vlan_name": "vlanname80", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "90", + "vlan_name": "v90", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "91", + "vlan_name": "v91", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "97", + "vlan_name": "vlan_97", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "98", + "vlan_name": "vlan_98", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "99", + "vlan_name": "vlan_99", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "111", + "vlan_name": "data", + "status": "active", + "interfaces": [ + "Gi1/0/6", + "Gi1/0/8", + "Gi1/0/11", + "Gi1/0/14", + "Gi1/0/17", + "Gi1/0/23", + "Gi1/0/26", + "Gi1/0/28", + "Gi1/0/32", + "Gi1/0/34", + "Gi1/0/36", + "Gi1/0/38", + "Gi1/0/40", + "Gi1/0/42", + "Gi1/0/44", + "Gi1/0/46", + "Gi1/0/48", + "Gi2/0/1", + "Gi2/0/2", + "Gi2/0/3", + "Gi2/0/4", + "Gi2/0/5", + "Gi2/0/6", + "Gi2/0/7", + "Gi2/0/8", + "Gi2/0/9", + "Gi2/0/10", + "Gi2/0/11", + "Gi2/0/12", + "Gi2/0/13", + "Gi2/0/14", + "Gi2/0/15", + "Gi2/0/16", + "Gi2/0/17", + "Gi2/0/18", + "Gi2/0/19", + "Gi2/0/20", + "Gi2/0/21", + "Gi2/0/22", + "Gi2/0/23", + "Gi2/0/24", + "Gi2/0/25", + "Gi2/0/26", + "Gi2/0/27", + "Gi2/0/28", + "Gi2/0/29", + "Gi2/0/30", + "Gi2/0/31", + "Gi2/0/32", + "Gi2/0/33", + "Gi2/0/34", + "Gi2/0/35", + "Gi2/0/36", + "Gi2/0/37", + "Gi2/0/38", + "Gi2/0/39", + "Gi2/0/40", + "Gi2/0/41", + "Gi2/0/42", + "Gi2/0/43", + "Gi2/0/44", + "Gi2/0/45", + "Gi2/0/46", + "Gi2/0/47", + "Gi2/0/48" + ] + }, + { + "vlan_id": "112", + "vlan_name": "data", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "113", + "vlan_name": "data", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "114", + "vlan_name": "data", + "status": "aFctive", + "interfaces": [] + }, + { + "vlan_id": "119", + "vlan_name": "data", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "145", + "vlan_name": "data", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "160", + "vlan_name": "v160", + "status": "active", + "interfaces": [ + "Gi1/0/1", + "Gi1/0/2", + "Gi1/0/3", + "Gi1/0/4", + "Gi1/0/5", + "Gi1/0/7", + "Gi1/0/9", + "Gi1/0/10", + "Gi1/0/12", + "Gi1/0/13", + "Gi1/0/15", + "Gi1/0/16", + "Gi1/0/18", + "Gi1/0/19", + "Gi1/0/20", + "Gi1/0/21", + "Gi1/0/22", + "Gi1/0/24", + "Gi1/0/25", + "Gi1/0/27", + "Gi1/0/29", + "Gi1/0/30", + "Gi1/0/31", + "Gi1/0/33", + "Gi1/0/35", + "Gi1/0/37", + "Gi1/0/39", + "Gi1/0/41", + "Gi1/0/43" + ] + }, + { + "vlan_id": "200", + "vlan_name": "vlan200", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "235", + "vlan_name": "vlan235", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "239", + "vlan_name": "v239", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "242", + "vlan_name": "storage", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "243", + "vlan_name": "storage", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "244", + "vlan_name": "mgmt", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "250", + "vlan_name": "internet", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "255", + "vlan_name": "v255", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "600", + "vlan_name": "v600", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "700", + "vlan_name": "FW", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "939", + "vlan_name": "v939", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "955", + "vlan_name": "vlan955", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "1002", + "vlan_name": "fddi-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1003", + "vlan_name": "trcrf-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1004", + "vlan_name": "fddinet-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1005", + "vlan_name": "trbrf-default", + "status": "act/unsup", + "interfaces": [] + } + ], + "show version": [ + { + "software_image": "C2960X-UNIVERSALK9-M", + "version": "15.2(4)E9", + "release": "fc2", + "rommon": "Bootstrap", + "hostname": "2960-01", + "uptime": "8 weeks, 2 days, 10 hours, 32 minutes", + "uptime_years": "", + "uptime_weeks": "8", + "uptime_days": "2", + "uptime_hours": "10", + "uptime_minutes": "32", + "reload_reason": "power-on", + "running_image": "c2960x-universalk9-mz.152-4.E9.bin", + "hardware": [ + "WS-C2960X-48FPD-L", + "WS-C2960X-48FPD-L" + ], + "serial": [ + "FJC2304W0BB", + "FJC2304W0BA" + ], + "config_register": "0xF", + "mac_address": [ + "D0:EC:35:07:CC:80", + "D0:EC:35:07:CF:00" + ], + "restarted": "12:56:08 UTC Tue Apr 9 2024" + } + ], + "show interfaces": [ + { + "interface": "Vlan1", + "link_status": "administratively down", + "protocol_status": "down", + "hardware_type": "EtherSVI", + "mac_address": "d0ec.3507.ccc0", + "bia": "d0ec.3507.ccc0", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "07:08:47", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "39727", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Vlan41", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "EtherSVI", + "mac_address": "d0ec.3507.ccc1", + "bia": "d0ec.3507.ccc1", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:01", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "2402278", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Vlan255", + "link_status": "administratively down", + "protocol_status": "down", + "hardware_type": "EtherSVI", + "mac_address": "d0ec.3507.ccc2", + "bia": "d0ec.3507.ccc2", + "description": "a description", + "ip_address": "10.60.255.59", + "prefix_length": "24", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Vlan955", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "EtherSVI", + "mac_address": "d0ec.3507.ccc3", + "bia": "d0ec.3507.ccc3", + "description": "a description", + "ip_address": "198.51.100.1", + "prefix_length": "27", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:00", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "13000", + "output_rate": "24000", + "input_pps": "9", + "output_pps": "8", + "input_packets": "43261775", + "output_packets": "42012824", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "FastEthernet0", + "link_status": "administratively down", + "protocol_status": "down", + "hardware_type": "APM86XXX FastEthernet", + "mac_address": "d0ec.3507.ccb9", + "bia": "d0ec.3507.ccb9", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "100000 Kbit", + "delay": "100 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/1", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf01", + "bia": "d0ec.3507.cf01", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/2", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf02", + "bia": "d0ec.3507.cf02", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/3", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf03", + "bia": "d0ec.3507.cf03", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/4", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf04", + "bia": "d0ec.3507.cf04", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/5", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf05", + "bia": "d0ec.3507.cf05", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/6", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf06", + "bia": "d0ec.3507.cf06", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/7", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf07", + "bia": "d0ec.3507.cf07", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/8", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf08", + "bia": "d0ec.3507.cf08", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/9", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf09", + "bia": "d0ec.3507.cf09", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/10", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf0a", + "bia": "d0ec.3507.cf0a", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/11", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf0b", + "bia": "d0ec.3507.cf0b", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/12", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf0c", + "bia": "d0ec.3507.cf0c", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/13", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf0d", + "bia": "d0ec.3507.cf0d", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/14", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf0e", + "bia": "d0ec.3507.cf0e", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/15", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf0f", + "bia": "d0ec.3507.cf0f", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/16", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf10", + "bia": "d0ec.3507.cf10", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/17", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf11", + "bia": "d0ec.3507.cf11", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/18", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf12", + "bia": "d0ec.3507.cf12", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/19", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf13", + "bia": "d0ec.3507.cf13", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/20", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf14", + "bia": "d0ec.3507.cf14", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/21", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf15", + "bia": "d0ec.3507.cf15", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/22", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf16", + "bia": "d0ec.3507.cf16", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/23", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf17", + "bia": "d0ec.3507.cf17", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/24", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf18", + "bia": "d0ec.3507.cf18", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/25", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf19", + "bia": "d0ec.3507.cf19", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/26", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf1a", + "bia": "d0ec.3507.cf1a", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/27", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf1b", + "bia": "d0ec.3507.cf1b", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/28", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf1c", + "bia": "d0ec.3507.cf1c", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/29", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf1d", + "bia": "d0ec.3507.cf1d", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/30", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf1e", + "bia": "d0ec.3507.cf1e", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/31", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf1f", + "bia": "d0ec.3507.cf1f", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/32", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf20", + "bia": "d0ec.3507.cf20", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/33", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf21", + "bia": "d0ec.3507.cf21", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/34", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf22", + "bia": "d0ec.3507.cf22", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/35", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf23", + "bia": "d0ec.3507.cf23", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/36", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf24", + "bia": "d0ec.3507.cf24", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/37", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf25", + "bia": "d0ec.3507.cf25", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/38", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf26", + "bia": "d0ec.3507.cf26", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/39", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf27", + "bia": "d0ec.3507.cf27", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/40", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf28", + "bia": "d0ec.3507.cf28", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/41", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf29", + "bia": "d0ec.3507.cf29", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/42", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf2a", + "bia": "d0ec.3507.cf2a", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/43", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf2b", + "bia": "d0ec.3507.cf2b", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/44", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf2c", + "bia": "d0ec.3507.cf2c", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/45", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf2d", + "bia": "d0ec.3507.cf2d", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:07", + "last_output": "00:00:42", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "96000", + "output_rate": "2112000", + "input_pps": "31", + "output_pps": "248", + "input_packets": "1007688320", + "output_packets": "3637308419", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/46", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf2e", + "bia": "d0ec.3507.cf2e", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/47", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf2f", + "bia": "d0ec.3507.cf2f", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:03", + "last_output": "00:00:10", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "54000", + "input_pps": "0", + "output_pps": "59", + "input_packets": "349234942", + "output_packets": "1404218469", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/48", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf30", + "bia": "d0ec.3507.cf30", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/49", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf31", + "bia": "d0ec.3507.cf31", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet1/0/50", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cf32", + "bia": "d0ec.3507.cf32", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TenGigabitEthernet1/0/1", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Ten Gigabit Ethernet", + "mac_address": "d0ec.3507.cf33", + "bia": "d0ec.3507.cf33", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:48", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "53000", + "input_pps": "0", + "output_pps": "59", + "input_packets": "686710", + "output_packets": "240867522", + "runts": "1", + "giants": "0", + "input_errors": "2", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TenGigabitEthernet1/0/2", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Ten Gigabit Ethernet", + "mac_address": "d0ec.3507.cf34", + "bia": "d0ec.3507.cf34", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "Not Present", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/1", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc81", + "bia": "d0ec.3507.cc81", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/2", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc82", + "bia": "d0ec.3507.cc82", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/3", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc83", + "bia": "d0ec.3507.cc83", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/4", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc84", + "bia": "d0ec.3507.cc84", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "10/100/1000BaseTX", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:25", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "3000", + "input_pps": "0", + "output_pps": "4", + "input_packets": "581662", + "output_packets": "35834976", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/5", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc85", + "bia": "d0ec.3507.cc85", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/6", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc86", + "bia": "d0ec.3507.cc86", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/7", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc87", + "bia": "d0ec.3507.cc87", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/8", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc88", + "bia": "d0ec.3507.cc88", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/9", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc89", + "bia": "d0ec.3507.cc89", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/10", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc8a", + "bia": "d0ec.3507.cc8a", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/11", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc8b", + "bia": "d0ec.3507.cc8b", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/12", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc8c", + "bia": "d0ec.3507.cc8c", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/13", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc8d", + "bia": "d0ec.3507.cc8d", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/14", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc8e", + "bia": "d0ec.3507.cc8e", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/15", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc8f", + "bia": "d0ec.3507.cc8f", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/16", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc90", + "bia": "d0ec.3507.cc90", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/17", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc91", + "bia": "d0ec.3507.cc91", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/18", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc92", + "bia": "d0ec.3507.cc92", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/19", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc93", + "bia": "d0ec.3507.cc93", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/20", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc94", + "bia": "d0ec.3507.cc94", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/21", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc95", + "bia": "d0ec.3507.cc95", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/22", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc96", + "bia": "d0ec.3507.cc96", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/23", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc97", + "bia": "d0ec.3507.cc97", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/24", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc98", + "bia": "d0ec.3507.cc98", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/25", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc99", + "bia": "d0ec.3507.cc99", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/26", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc9a", + "bia": "d0ec.3507.cc9a", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/27", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc9b", + "bia": "d0ec.3507.cc9b", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/28", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc9c", + "bia": "d0ec.3507.cc9c", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/29", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc9d", + "bia": "d0ec.3507.cc9d", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/30", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc9e", + "bia": "d0ec.3507.cc9e", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/31", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cc9f", + "bia": "d0ec.3507.cc9f", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/32", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cca0", + "bia": "d0ec.3507.cca0", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/33", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cca1", + "bia": "d0ec.3507.cca1", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/34", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cca2", + "bia": "d0ec.3507.cca2", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/35", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cca3", + "bia": "d0ec.3507.cca3", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/36", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cca4", + "bia": "d0ec.3507.cca4", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/37", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cca5", + "bia": "d0ec.3507.cca5", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/38", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cca6", + "bia": "d0ec.3507.cca6", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/39", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cca7", + "bia": "d0ec.3507.cca7", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/40", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cca8", + "bia": "d0ec.3507.cca8", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/41", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.cca9", + "bia": "d0ec.3507.cca9", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/42", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.ccaa", + "bia": "d0ec.3507.ccaa", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/43", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.ccab", + "bia": "d0ec.3507.ccab", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/44", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.ccac", + "bia": "d0ec.3507.ccac", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/45", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.ccad", + "bia": "d0ec.3507.ccad", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/46", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.ccae", + "bia": "d0ec.3507.ccae", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/47", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.ccaf", + "bia": "d0ec.3507.ccaf", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/48", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.ccb0", + "bia": "d0ec.3507.ccb0", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "10/100/1000BaseTX", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/49", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.ccb1", + "bia": "d0ec.3507.ccb1", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet2/0/50", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Gigabit Ethernet", + "mac_address": "d0ec.3507.ccb2", + "bia": "d0ec.3507.ccb2", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "10000 Kbit", + "delay": "1000 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TenGigabitEthernet2/0/1", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Ten Gigabit Ethernet", + "mac_address": "d0ec.3507.ccb3", + "bia": "d0ec.3507.ccb3", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:01", + "last_output": "00:00:02", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "2083000", + "output_rate": "135000", + "input_pps": "256", + "output_pps": "46", + "input_packets": "4844777200", + "output_packets": "1399160106", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TenGigabitEthernet2/0/2", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Ten Gigabit Ethernet", + "mac_address": "d0ec.3507.ccb4", + "bia": "d0ec.3507.ccb4", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "Not Present", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Port-channel1", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "EtherChannel", + "mac_address": "d0ec.3507.ccb3", + "bia": "d0ec.3507.ccb3", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "1500", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "unknown", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:00", + "last_output": "00:01:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "2083000", + "output_rate": "135000", + "input_pps": "256", + "output_pps": "46", + "input_packets": "4844777007", + "output_packets": "1399159965", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + } + ], + "show interfaces switchport": [ + { + "interface": "Gi1/0/1", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/2", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/3", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/4", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/5", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/6", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/7", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/8", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/9", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/10", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/11", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/12", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/13", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/14", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/15", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/16", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/17", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/18", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/19", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/20", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/21", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/22", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/23", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/24", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/25", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/26", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/27", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/28", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/29", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/30", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/31", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/32", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/33", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/34", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/35", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/36", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/37", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/38", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/39", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/40", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/41", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/42", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/43", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "160", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/44", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/45", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "244", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/46", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/47", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "244", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/48", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi1/0/49", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "", + "mode": "", + "admin_mode": "trunk", + "access_vlan": "", + "native_vlan": "", + "voice_vlan": "", + "trunking_vlans": [] + }, + { + "interface": "Gi1/0/50", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "", + "mode": "", + "admin_mode": "dynamic auto", + "access_vlan": "", + "native_vlan": "", + "voice_vlan": "", + "trunking_vlans": [] + }, + { + "interface": "Te1/0/1", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Te1/0/2", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/1", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/2", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/3", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/4", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/5", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/6", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/7", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/8", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/9", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/10", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/11", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/12", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/13", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/14", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/15", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/16", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/17", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/18", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/19", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/20", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/21", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/22", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/23", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/24", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/25", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/26", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/27", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/28", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/29", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/30", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/31", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/32", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/33", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/34", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/35", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/36", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/37", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/38", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/39", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/40", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/41", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/42", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/43", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/44", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/45", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/46", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/47", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/48", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "111", + "native_vlan": "1", + "voice_vlan": "11", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Gi2/0/49", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "", + "mode": "", + "admin_mode": "dynamic auto", + "access_vlan": "", + "native_vlan": "", + "voice_vlan": "", + "trunking_vlans": [] + }, + { + "interface": "Gi2/0/50", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "", + "mode": "", + "admin_mode": "dynamic auto", + "access_vlan": "", + "native_vlan": "", + "voice_vlan": "", + "trunking_vlans": [] + }, + { + "interface": "Te2/0/1", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po1)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Te2/0/2", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Po1", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + } + ], + "show etherchannel summary": [ + { + "group": "1", + "bundle_name": "Po1", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "member_interface": [ + "Gi1/0/49", + "Te2/0/1" + ], + "member_interface_status": [ + "D", + "P" + ] + } + ], + "show ip interface": [ + { + "interface": "Vlan1", + "link_status": "administratively down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Vlan41", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Vlan255", + "link_status": "administratively down", + "protocol_status": "down", + "ip_address": [ + "10.60.255.59" + ], + "prefix_length": [ + "24" + ], + "vrf": "", + "mtu": "1500", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Vlan955", + "link_status": "up", + "protocol_status": "up", + "ip_address": [ + "198.51.100.1" + ], + "prefix_length": [ + "27" + ], + "vrf": "", + "mtu": "1500", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "FastEthernet0", + "link_status": "administratively down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/1", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/2", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/3", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/4", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/5", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/6", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/7", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/8", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/9", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/10", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/11", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/12", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/13", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/14", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/15", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/16", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/17", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/18", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/19", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/20", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/21", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/22", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/23", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/24", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/25", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/26", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/27", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/28", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/29", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/30", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/31", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/32", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/33", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/34", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/35", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/36", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/37", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/38", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/39", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/40", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/41", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/42", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/43", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/44", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/45", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/46", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/47", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/48", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/49", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet1/0/50", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TenGigabitEthernet1/0/1", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TenGigabitEthernet1/0/2", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/1", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/2", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/3", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/4", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/5", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/6", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/7", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/8", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/9", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/10", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/11", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/12", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/13", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/14", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/15", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/16", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/17", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/18", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/19", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/20", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/21", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/22", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/23", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/24", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/25", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/26", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/27", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/28", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/29", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/30", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/31", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/32", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/33", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/34", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/35", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/36", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/37", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/38", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/39", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/40", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/41", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/42", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/43", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/44", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/45", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/46", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/47", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/48", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/49", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet2/0/50", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TenGigabitEthernet2/0/1", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TenGigabitEthernet2/0/2", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Port-channel1", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + } + ] +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_xe/sync_devices/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_devices/expected_result_1.json new file mode 100755 index 00000000..edbb9b32 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_devices/expected_result_1.json @@ -0,0 +1,7 @@ +{ + "device_type": "ISR4331/K9", + "hostname": "ISR-XE-01", + "mask_length": 32, + "mgmt_interface": "Loopback0", + "serial": "FLM241611GV" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_xe/sync_devices/expected_result_2.json b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_devices/expected_result_2.json new file mode 100755 index 00000000..65ab30f3 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_devices/expected_result_2.json @@ -0,0 +1,7 @@ +{ + "device_type": "WS-C2960X-48FPD-L", + "hostname": "2960-01", + "mask_length": 27, + "mgmt_interface": "Vlan955", + "serial": "FJC2304W0BB" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_all/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_all/expected_result_1.json new file mode 100755 index 00000000..9e26dfee --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_all/expected_result_1.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_all/expected_result_2.json b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_all/expected_result_2.json new file mode 100755 index 00000000..cb846d70 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_all/expected_result_2.json @@ -0,0 +1,1655 @@ +{ + "interfaces": { + "FastEthernet0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb9", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet1/0/1": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf01", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/10": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/11": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0b", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/12": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0c", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/13": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0d", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/14": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0e", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/15": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0f", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/16": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf10", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/17": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf11", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/18": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf12", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/19": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf13", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/2": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf02", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/20": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf14", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/21": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf15", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/22": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf16", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/23": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf17", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/24": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf18", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/25": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf19", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/26": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/27": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1b", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/28": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1c", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/29": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1d", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/3": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf03", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/30": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1e", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/31": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1f", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/32": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf20", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/33": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf21", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/34": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf22", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/35": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf23", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/36": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf24", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/37": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf25", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/38": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf26", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/39": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf27", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf04", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/40": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf28", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/41": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf29", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/42": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/43": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2b", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/44": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2c", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/45": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cf2d", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/46": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2e", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/47": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cf2f", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/48": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf30", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/49": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "Port-channel1", + "link_status": "False", + "mac_address": "d0ec.3507.cf31", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf05", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/50": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf32", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf06", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/7": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf07", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/8": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf08", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/9": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf09", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/1": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc81", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/10": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/11": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8b", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/12": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8c", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/13": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8d", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/14": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8e", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/15": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8f", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/16": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc90", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/17": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc91", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/18": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc92", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/19": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc93", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/2": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc82", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/20": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc94", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/21": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc95", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/22": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc96", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/23": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc97", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/24": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc98", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/25": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc99", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/26": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/27": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9b", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/28": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9c", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/29": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9d", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/3": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc83", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/30": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9e", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/31": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9f", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/32": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca0", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/33": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca1", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/34": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca2", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/35": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca3", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/36": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca4", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/37": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca5", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/38": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca6", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/39": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca7", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cc84", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/40": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca8", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/41": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca9", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/42": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccaa", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/43": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccab", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/44": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccac", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/45": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccad", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/46": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccae", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/47": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccaf", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/48": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb0", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/49": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb1", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc85", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/50": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb2", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc86", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/7": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc87", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/8": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc88", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/9": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc89", + "mtu": "1500", + "type": "1000base-t" + }, + "Port-channel1": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.ccb3", + "mtu": "1500", + "type": "lag" + }, + "TenGigabitEthernet1/0/1": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cf33", + "mtu": "1500", + "type": "10gbase-t" + }, + "TenGigabitEthernet1/0/2": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf34", + "mtu": "1500", + "type": "10gbase-t" + }, + "TenGigabitEthernet2/0/1": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "Port-channel1", + "link_status": "True", + "mac_address": "d0ec.3507.ccb3", + "mtu": "1500", + "type": "10gbase-t" + }, + "TenGigabitEthernet2/0/2": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb4", + "mtu": "1500", + "type": "10gbase-t" + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccc0", + "mtu": "1500", + "type": "virtual" + }, + "Vlan255": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.60.255.59", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccc2", + "mtu": "1500", + "type": "virtual" + }, + "Vlan41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.ccc1", + "mtu": "1500", + "type": "virtual" + }, + "Vlan955": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "27" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.ccc3", + "mtu": "1500", + "type": "virtual" + } + }, + "serial": "FJC2304W0BB" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_no_options/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_no_options/expected_result_1.json new file mode 100755 index 00000000..5222ed55 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_no_options/expected_result_1.json @@ -0,0 +1,770 @@ +{ + "interfaces": { + "GigabitEthernet0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5dcf", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/0/0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.39.67.234", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d40", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/0/1": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d41", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/0/1.100": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.39.67.1", + "prefix_length": "25" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d41", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/0/1.200": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.41.238.129", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d41", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/0/1.300": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.39.67.209", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d41", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/0/2": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.39.67.217", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d42", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/2/0": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d50", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/2/1": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d51", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/2/2": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d52", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/2/3": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d53", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/2/4": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d54", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/2/5": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d55", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/2/6": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d56", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet0/2/7": { + "802.1Q_mode": "access", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d57", + "mtu": "1500", + "type": "other" + }, + "Loopback0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "32" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "1514", + "type": "other" + }, + "Serial0/1/0:0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:1": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:10": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:11": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:12": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:13": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:14": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:15": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:16": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:17": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:18": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:19": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:2": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:20": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:21": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:22": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:23": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:24": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:25": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:26": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:27": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:28": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:29": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:3": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:30": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:4": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:5": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:6": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:7": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:8": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Serial0/1/0:9": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other" + }, + "Service-Engine0/1/0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "cc70.ed3b.0716", + "mtu": "9216", + "type": "other" + }, + "Service-Engine0/4/0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d40", + "mtu": "9216", + "type": "other" + }, + "Tunnel0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "9972", + "type": "other" + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5dc4", + "mtu": "1500", + "type": "virtual" + } + }, + "serial": "FLM241611GV" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_no_options/expected_result_2.json b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_no_options/expected_result_2.json new file mode 100755 index 00000000..cb846d70 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_no_options/expected_result_2.json @@ -0,0 +1,1655 @@ +{ + "interfaces": { + "FastEthernet0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb9", + "mtu": "1500", + "type": "other" + }, + "GigabitEthernet1/0/1": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf01", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/10": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/11": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0b", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/12": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0c", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/13": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0d", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/14": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0e", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/15": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0f", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/16": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf10", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/17": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf11", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/18": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf12", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/19": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf13", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/2": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf02", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/20": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf14", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/21": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf15", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/22": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf16", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/23": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf17", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/24": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf18", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/25": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf19", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/26": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/27": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1b", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/28": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1c", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/29": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1d", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/3": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf03", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/30": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1e", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/31": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1f", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/32": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf20", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/33": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf21", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/34": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf22", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/35": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf23", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/36": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf24", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/37": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf25", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/38": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf26", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/39": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf27", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf04", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/40": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf28", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/41": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf29", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/42": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/43": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2b", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/44": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2c", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/45": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cf2d", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/46": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2e", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/47": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cf2f", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/48": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf30", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/49": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "Port-channel1", + "link_status": "False", + "mac_address": "d0ec.3507.cf31", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf05", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/50": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf32", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf06", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/7": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf07", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/8": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf08", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet1/0/9": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf09", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/1": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc81", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/10": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/11": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8b", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/12": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8c", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/13": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8d", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/14": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8e", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/15": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8f", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/16": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc90", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/17": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc91", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/18": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc92", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/19": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc93", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/2": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc82", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/20": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc94", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/21": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc95", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/22": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc96", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/23": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc97", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/24": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc98", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/25": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc99", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/26": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9a", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/27": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9b", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/28": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9c", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/29": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9d", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/3": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc83", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/30": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9e", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/31": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9f", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/32": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca0", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/33": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca1", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/34": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca2", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/35": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca3", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/36": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca4", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/37": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca5", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/38": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca6", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/39": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca7", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cc84", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/40": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca8", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/41": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca9", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/42": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccaa", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/43": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccab", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/44": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccac", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/45": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccad", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/46": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccae", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/47": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccaf", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/48": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb0", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/49": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb1", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc85", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/50": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb2", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc86", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/7": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc87", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/8": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc88", + "mtu": "1500", + "type": "1000base-t" + }, + "GigabitEthernet2/0/9": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc89", + "mtu": "1500", + "type": "1000base-t" + }, + "Port-channel1": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.ccb3", + "mtu": "1500", + "type": "lag" + }, + "TenGigabitEthernet1/0/1": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cf33", + "mtu": "1500", + "type": "10gbase-t" + }, + "TenGigabitEthernet1/0/2": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf34", + "mtu": "1500", + "type": "10gbase-t" + }, + "TenGigabitEthernet2/0/1": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "Port-channel1", + "link_status": "True", + "mac_address": "d0ec.3507.ccb3", + "mtu": "1500", + "type": "10gbase-t" + }, + "TenGigabitEthernet2/0/2": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb4", + "mtu": "1500", + "type": "10gbase-t" + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccc0", + "mtu": "1500", + "type": "virtual" + }, + "Vlan255": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.60.255.59", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccc2", + "mtu": "1500", + "type": "virtual" + }, + "Vlan41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.ccc1", + "mtu": "1500", + "type": "virtual" + }, + "Vlan955": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "27" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.ccc3", + "mtu": "1500", + "type": "virtual" + } + }, + "serial": "FJC2304W0BB" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_with_vlans/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_with_vlans/expected_result_1.json new file mode 100755 index 00000000..aa480d15 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_with_vlans/expected_result_1.json @@ -0,0 +1,896 @@ +{ + "interfaces": { + "GigabitEthernet0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5dcf", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "GigabitEthernet0/0/0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.39.67.234", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d40", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "GigabitEthernet0/0/1": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d41", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "GigabitEthernet0/0/1.100": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.39.67.1", + "prefix_length": "25" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d41", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "GigabitEthernet0/0/1.200": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.41.238.129", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d41", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "GigabitEthernet0/0/1.300": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.39.67.209", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d41", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "GigabitEthernet0/0/2": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.39.67.217", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d42", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "GigabitEthernet0/2/0": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d50", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/2/1": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d51", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/2/2": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d52", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/2/3": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d53", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/2/4": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d54", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/2/5": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d55", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/2/6": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d56", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet0/2/7": { + "802.1Q_mode": "access", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d57", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": { + "id": "500", + "name": "VLAN0500" + } + }, + "Loopback0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "32" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:1": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:10": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:11": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:12": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:13": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:14": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:15": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:16": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:17": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:18": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:19": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:2": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:20": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:21": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:22": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:23": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:24": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:25": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:26": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:27": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:28": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:29": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:3": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:30": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:4": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:5": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:6": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:7": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:8": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Serial0/1/0:9": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Service-Engine0/1/0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "cc70.ed3b.0716", + "mtu": "9216", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Service-Engine0/4/0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d40", + "mtu": "9216", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Tunnel0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "9972", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5dc4", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + } + }, + "serial": "FLM241611GV" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_with_vlans/expected_result_2.json b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_with_vlans/expected_result_2.json new file mode 100755 index 00000000..8c7eed61 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_with_vlans/expected_result_2.json @@ -0,0 +1,2181 @@ +{ + "interfaces": { + "FastEthernet0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb9", + "mtu": "1500", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": {} + }, + "GigabitEthernet1/0/1": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf01", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/10": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0a", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/11": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0b", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/12": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0c", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/13": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0d", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/14": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0e", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/15": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0f", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/16": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf10", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/17": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf11", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/18": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf12", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/19": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf13", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/2": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf02", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/20": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf14", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/21": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf15", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/22": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf16", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/23": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf17", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/24": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf18", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/25": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf19", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/26": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1a", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/27": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1b", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/28": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1c", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/29": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1d", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/3": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf03", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/30": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1e", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/31": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1f", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/32": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf20", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/33": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf21", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/34": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf22", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/35": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf23", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/36": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf24", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/37": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf25", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/38": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf26", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/39": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf27", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf04", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/40": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf28", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/41": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf29", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/42": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2a", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/43": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2b", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/44": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2c", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/45": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cf2d", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "244", + "name": "mgmt" + } + }, + "GigabitEthernet1/0/46": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2e", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/47": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cf2f", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "244", + "name": "mgmt" + } + }, + "GigabitEthernet1/0/48": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf30", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/49": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "Port-channel1", + "link_status": "False", + "mac_address": "d0ec.3507.cf31", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "GigabitEthernet1/0/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf05", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/50": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf32", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "GigabitEthernet1/0/6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf06", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/7": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf07", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet1/0/8": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf08", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet1/0/9": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf09", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "160", + "name": "v160" + } + }, + "GigabitEthernet2/0/1": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc81", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/10": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8a", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/11": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8b", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/12": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8c", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/13": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8d", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/14": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8e", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/15": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8f", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/16": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc90", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/17": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc91", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/18": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc92", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/19": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc93", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/2": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc82", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/20": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc94", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/21": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc95", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/22": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc96", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/23": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc97", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/24": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc98", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/25": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc99", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/26": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9a", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/27": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9b", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/28": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9c", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/29": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9d", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/3": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc83", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/30": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9e", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/31": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9f", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/32": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca0", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/33": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca1", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/34": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca2", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/35": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca3", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/36": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca4", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/37": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca5", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/38": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca6", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/39": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca7", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cc84", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/40": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca8", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/41": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca9", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/42": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccaa", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/43": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccab", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/44": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccac", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/45": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccad", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/46": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccae", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/47": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccaf", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/48": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb0", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/49": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb1", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "GigabitEthernet2/0/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc85", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/50": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb2", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": {} + }, + "GigabitEthernet2/0/6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc86", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/7": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc87", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/8": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc88", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "GigabitEthernet2/0/9": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc89", + "mtu": "1500", + "tagged_vlans": [], + "type": "1000base-t", + "untagged_vlan": { + "id": "111", + "name": "data" + } + }, + "Port-channel1": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.ccb3", + "mtu": "1500", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "TenGigabitEthernet1/0/1": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cf33", + "mtu": "1500", + "tagged_vlans": [], + "type": "10gbase-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "TenGigabitEthernet1/0/2": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf34", + "mtu": "1500", + "tagged_vlans": [], + "type": "10gbase-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "TenGigabitEthernet2/0/1": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "Port-channel1", + "link_status": "True", + "mac_address": "d0ec.3507.ccb3", + "mtu": "1500", + "tagged_vlans": [], + "type": "10gbase-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "TenGigabitEthernet2/0/2": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb4", + "mtu": "1500", + "tagged_vlans": [], + "type": "10gbase-t", + "untagged_vlan": { + "id": "1", + "name": "default" + } + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccc0", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan255": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.60.255.59", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccc2", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.ccc1", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + }, + "Vlan955": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "27" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.ccc3", + "mtu": "1500", + "tagged_vlans": [], + "type": "virtual", + "untagged_vlan": {} + } + }, + "serial": "FJC2304W0BB" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_with_vrfs/expected_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_with_vrfs/expected_result_1.json new file mode 100755 index 00000000..9b5825a6 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_with_vrfs/expected_result_1.json @@ -0,0 +1,821 @@ +{ + "interfaces": { + "GigabitEthernet0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5dcf", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/0/0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.39.67.234", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d40", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/0/1": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d41", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/0/1.100": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.39.67.1", + "prefix_length": "25" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d41", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/0/1.200": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.41.238.129", + "prefix_length": "26" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d41", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/0/1.300": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.39.67.209", + "prefix_length": "29" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d41", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/0/2": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "10.39.67.217", + "prefix_length": "30" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d42", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/2/0": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d50", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/2/1": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d51", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/2/2": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d52", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/2/3": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d53", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/2/4": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d54", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/2/5": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d55", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/2/6": { + "802.1Q_mode": "tagged-all", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d56", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet0/2/7": { + "802.1Q_mode": "access", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "ac3a.6789.5d57", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Loopback0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "32" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:1": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:10": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:11": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:12": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:13": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:14": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:15": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:16": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:17": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:18": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:19": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:2": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:20": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:21": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:22": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:23": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:24": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:25": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:26": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:27": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:28": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:29": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:3": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:30": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:4": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:5": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:6": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:7": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:8": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Serial0/1/0:9": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "Service-Engine0/1/0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "cc70.ed3b.0716", + "mtu": "9216", + "type": "other", + "vrf": {} + }, + "Service-Engine0/4/0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5d40", + "mtu": "9216", + "type": "other", + "vrf": {} + }, + "Tunnel0": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "", + "mtu": "9972", + "type": "other", + "vrf": {} + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "isr description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "ac3a.6789.5dc4", + "mtu": "1500", + "type": "virtual", + "vrf": {} + } + }, + "serial": "FLM241611GV" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_with_vrfs/expected_result_2.json b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_with_vrfs/expected_result_2.json new file mode 100755 index 00000000..57e09409 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_xe/sync_network_data_with_vrfs/expected_result_2.json @@ -0,0 +1,1765 @@ +{ + "interfaces": { + "FastEthernet0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb9", + "mtu": "1500", + "type": "other", + "vrf": {} + }, + "GigabitEthernet1/0/1": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf01", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/10": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0a", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/11": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0b", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/12": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0c", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/13": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0d", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/14": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0e", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/15": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf0f", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/16": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf10", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/17": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf11", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/18": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf12", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/19": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf13", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/2": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf02", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/20": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf14", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/21": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf15", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/22": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf16", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/23": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf17", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/24": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf18", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/25": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf19", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/26": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1a", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/27": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1b", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/28": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1c", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/29": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1d", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/3": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf03", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/30": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1e", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/31": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf1f", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/32": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf20", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/33": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf21", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/34": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf22", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/35": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf23", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/36": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf24", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/37": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf25", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/38": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf26", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/39": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf27", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf04", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/40": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf28", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/41": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf29", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/42": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2a", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/43": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2b", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/44": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2c", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/45": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cf2d", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/46": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf2e", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/47": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cf2f", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/48": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf30", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/49": { + "802.1Q_mode": "tagged", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "Port-channel1", + "link_status": "False", + "mac_address": "d0ec.3507.cf31", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf05", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/50": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf32", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf06", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/7": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf07", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/8": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf08", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet1/0/9": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf09", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/1": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc81", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/10": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8a", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/11": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8b", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/12": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8c", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/13": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8d", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/14": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8e", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/15": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc8f", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/16": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc90", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/17": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc91", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/18": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc92", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/19": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc93", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/2": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc82", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/20": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc94", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/21": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc95", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/22": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc96", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/23": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc97", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/24": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc98", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/25": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc99", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/26": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9a", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/27": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9b", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/28": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9c", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/29": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9d", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/3": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc83", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/30": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9e", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/31": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc9f", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/32": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca0", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/33": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca1", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/34": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca2", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/35": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca3", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/36": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca4", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/37": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca5", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/38": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca6", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/39": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca7", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/4": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cc84", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/40": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca8", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/41": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cca9", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/42": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccaa", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/43": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccab", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/44": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccac", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/45": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccad", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/46": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccae", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/47": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccaf", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/48": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb0", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/49": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb1", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/5": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc85", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/50": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb2", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/6": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc86", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/7": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc87", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/8": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc88", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "GigabitEthernet2/0/9": { + "802.1Q_mode": "access", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cc89", + "mtu": "1500", + "type": "1000base-t", + "vrf": {} + }, + "Port-channel1": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.ccb3", + "mtu": "1500", + "type": "lag", + "vrf": {} + }, + "TenGigabitEthernet1/0/1": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.cf33", + "mtu": "1500", + "type": "10gbase-t", + "vrf": {} + }, + "TenGigabitEthernet1/0/2": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.cf34", + "mtu": "1500", + "type": "10gbase-t", + "vrf": {} + }, + "TenGigabitEthernet2/0/1": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "Port-channel1", + "link_status": "True", + "mac_address": "d0ec.3507.ccb3", + "mtu": "1500", + "type": "10gbase-t", + "vrf": {} + }, + "TenGigabitEthernet2/0/2": { + "802.1Q_mode": "tagged-all", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccb4", + "mtu": "1500", + "type": "10gbase-t", + "vrf": {} + }, + "Vlan1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccc0", + "mtu": "1500", + "type": "virtual", + "vrf": {} + }, + "Vlan255": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "10.60.255.59", + "prefix_length": "24" + } + ], + "lag": "", + "link_status": "False", + "mac_address": "d0ec.3507.ccc2", + "mtu": "1500", + "type": "virtual", + "vrf": {} + }, + "Vlan41": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "", + "prefix_length": "" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.ccc1", + "mtu": "1500", + "type": "virtual", + "vrf": {} + }, + "Vlan955": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": "27" + } + ], + "lag": "", + "link_status": "True", + "mac_address": "d0ec.3507.ccc3", + "mtu": "1500", + "type": "virtual", + "vrf": {} + } + }, + "serial": "FJC2304W0BB" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/cisco_xe/tmp_stack_command_getter_result_1.json b/nautobot_device_onboarding/tests/mock/cisco_xe/tmp_stack_command_getter_result_1.json new file mode 100755 index 00000000..c8f0cd1b --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/cisco_xe/tmp_stack_command_getter_result_1.json @@ -0,0 +1,4826 @@ +{ + "show version": [ + { + "software_image": "CAT9K_IOSXE", + "version": "16.12.4", + "release": "fc5", + "rommon": "IOS-XE", + "hostname": "IOS-XE-C9500", + "uptime": "3 years, 1 day, 7 hours, 31 minutes", + "uptime_years": "3", + "uptime_weeks": "", + "uptime_days": "1", + "uptime_hours": "7", + "uptime_minutes": "31", + "reload_reason": "Reload Command", + "running_image": "packages.conf", + "hardware": [ + "C9500-24Y4C", + "C9500-24Y4C" + ], + "serial": [ + "FDO24340K4L", + "FDO243411LS" + ], + "config_register": "", + "mac_address": [ + "8c:94:1f:cd:95:c0", + "8c:94:1f:cd:d1:c0" + ], + "restarted": "08:25:36 UTC Mon May 31 2021" + } + ], + "show interfaces": [ + { + "interface": "Vlan1", + "link_status": "administratively down", + "protocol_status": "down , Autostate Enabled", + "hardware_type": "Ethernet SVI", + "mac_address": "8c94.1fcd.965f", + "bia": "8c94.1fcd.965f", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "", + "speed": "", + "media_type": "", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "GigabitEthernet0/0", + "link_status": "up", + "protocol_status": "up", + "hardware_type": "RP management port", + "mac_address": "8c94.1fcd.95c0", + "bia": "8c94.1fcd.95c0", + "description": "a description", + "ip_address": "198.51.100.1", + "prefix_length": "28", + "mtu": "1500", + "duplex": "Full Duplex", + "speed": "1000Mbps", + "media_type": "RJ45", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:00", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "14000", + "output_rate": "27000", + "input_pps": "11", + "output_pps": "9", + "input_packets": "278533761", + "output_packets": "172536647", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/1", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95c1", + "bia": "8c94.1fcd.95c1", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "1000BaseSX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "1y46w", + "last_output": "3d12h", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/2", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95c2", + "bia": "8c94.1fcd.95c2", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "1000BaseSX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:03", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "2000", + "output_rate": "4000", + "input_pps": "3", + "output_pps": "6", + "input_packets": "274456871687", + "output_packets": "1276315086253", + "runts": "0", + "giants": "0", + "input_errors": "1", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/3", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95c3", + "bia": "8c94.1fcd.95c3", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "10/100/1000BaseTX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:21", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "176000", + "output_rate": "33000", + "input_pps": "35", + "output_pps": "14", + "input_packets": "744323750428", + "output_packets": "1143540145002", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/4", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95c4", + "bia": "8c94.1fcd.95c4", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "10/100/1000BaseTX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:15", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "143000", + "output_rate": "264000", + "input_pps": "34", + "output_pps": "54", + "input_packets": "741937581097", + "output_packets": "1143086357120", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/5", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95c5", + "bia": "8c94.1fcd.95c5", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "1000BaseLX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:05", + "last_output": "00:00:01", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "15000", + "input_pps": "0", + "output_pps": "5", + "input_packets": "953067254870", + "output_packets": "192195903525", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/6", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95c6", + "bia": "8c94.1fcd.95c6", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/7", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95c7", + "bia": "8c94.1fcd.95c7", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:16", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "35000", + "output_rate": "23000", + "input_pps": "6", + "output_pps": "20", + "input_packets": "3494171912", + "output_packets": "2668631535", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/8", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95c8", + "bia": "8c94.1fcd.95c8", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:05", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "1439000", + "output_rate": "778000", + "input_pps": "760", + "output_pps": "759", + "input_packets": "36883341269", + "output_packets": "24471971453", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/9", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95c9", + "bia": "8c94.1fcd.95c9", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/10", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95ca", + "bia": "8c94.1fcd.95ca", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/11", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95cb", + "bia": "8c94.1fcd.95cb", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:13", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "3000", + "input_pps": "0", + "output_pps": "4", + "input_packets": "7432734212", + "output_packets": "1112162995", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/12", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95cc", + "bia": "8c94.1fcd.95cc", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:09", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "78050000", + "output_rate": "901000", + "input_pps": "24081", + "output_pps": "667", + "input_packets": "1327757112877", + "output_packets": "295044192113", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/13", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95cd", + "bia": "8c94.1fcd.95cd", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:13", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "3000", + "input_pps": "0", + "output_pps": "5", + "input_packets": "13256194452", + "output_packets": "9605226746", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/14", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95ce", + "bia": "8c94.1fcd.95ce", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:09", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "390804000", + "output_rate": "389000", + "input_pps": "45869", + "output_pps": "86", + "input_packets": "2301332561715", + "output_packets": "1481665537796", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/15", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95cf", + "bia": "8c94.1fcd.95cf", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "1000BaseLX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "23094000", + "output_rate": "19113000", + "input_pps": "4782", + "output_pps": "3964", + "input_packets": "333417382025", + "output_packets": "226808865640", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/16", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95d0", + "bia": "8c94.1fcd.95d0", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/17", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95d1", + "bia": "8c94.1fcd.95d1", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/18", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95d2", + "bia": "8c94.1fcd.95d2", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "1000BaseSX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:19", + "last_output": "00:00:03", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "19000", + "output_rate": "14000", + "input_pps": "16", + "output_pps": "8", + "input_packets": "81700460", + "output_packets": "122380195", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/19", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95d3", + "bia": "8c94.1fcd.95d3", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/20", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95d4", + "bia": "8c94.1fcd.95d4", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "unknown", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "2y48w", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/21", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95d5", + "bia": "8c94.1fcd.95d5", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/22", + "link_status": "administratively down", + "protocol_status": "down (disabled)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95d6", + "bia": "8c94.1fcd.95d6", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/23", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95d7", + "bia": "8c94.1fcd.95d7", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "1000BaseSX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:00", + "last_output": "00:00:02", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "19310000", + "output_rate": "23071000", + "input_pps": "4057", + "output_pps": "4785", + "input_packets": "419554639833", + "output_packets": "1286321939269", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE1/0/24", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.95d8", + "bia": "8c94.1fcd.95d8", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "1000BaseLX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:45", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "1104035", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "HundredGigE1/0/25", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Hundred Gigabit Ethernet", + "mac_address": "8c94.1fcd.95d9", + "bia": "8c94.1fcd.95d9", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "40Gb/s", + "media_type": "QSFP 40G SR BD SFP", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "332000", + "output_rate": "297564000", + "input_pps": "201", + "output_pps": "40328", + "input_packets": "895990058316", + "output_packets": "933795880615", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "HundredGigE1/0/26", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Hundred Gigabit Ethernet", + "mac_address": "8c94.1fcd.95da", + "bia": "8c94.1fcd.95da", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "40Gb/s", + "media_type": "QSFP 40G SR BD SFP", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "797000", + "output_rate": "267429000", + "input_pps": "292", + "output_pps": "35845", + "input_packets": "899476977745", + "output_packets": "940193527818", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "HundredGigE1/0/27", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Hundred Gigabit Ethernet", + "mac_address": "8c94.1fcd.95db", + "bia": "8c94.1fcd.95db", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "100000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "HundredGigE1/0/28", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Hundred Gigabit Ethernet", + "mac_address": "8c94.1fcd.95dc", + "bia": "8c94.1fcd.95dc", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "100000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/1", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1c1", + "bia": "8c94.1fcd.d1c1", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "1000BaseSX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:07", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "479123000", + "output_rate": "85238000", + "input_pps": "54979", + "output_pps": "26839", + "input_packets": "2268968017955", + "output_packets": "679876745726", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/2", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1c2", + "bia": "8c94.1fcd.d1c2", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "1000BaseLX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:00", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "338971000", + "output_rate": "88655000", + "input_pps": "41114", + "output_pps": "24125", + "input_packets": "2266672571771", + "output_packets": "679026439143", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/3", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1c3", + "bia": "8c94.1fcd.d1c3", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "10/100/1000BaseTX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:06", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "70287000", + "output_rate": "432957000", + "input_pps": "21401", + "output_pps": "49387", + "input_packets": "480992016929", + "output_packets": "1176820091720", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/4", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1c4", + "bia": "8c94.1fcd.d1c4", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "10/100/1000BaseTX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:07", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "76909000", + "output_rate": "361269000", + "input_pps": "24938", + "output_pps": "42023", + "input_packets": "482618750531", + "output_packets": "1176896850271", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/5", + "link_status": "administratively down", + "protocol_status": "down (disabled)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1c5", + "bia": "8c94.1fcd.d1c5", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/6", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1c6", + "bia": "8c94.1fcd.d1c6", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/7", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1c7", + "bia": "8c94.1fcd.d1c7", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:17", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "8578000", + "output_rate": "17443000", + "input_pps": "687", + "output_pps": "779", + "input_packets": "34657447107", + "output_packets": "36466216074", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/8", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1c8", + "bia": "8c94.1fcd.d1c8", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:05", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "18384000", + "output_rate": "9244000", + "input_pps": "1282", + "output_pps": "1171", + "input_packets": "61295941330", + "output_packets": "57251904770", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/9", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1c9", + "bia": "8c94.1fcd.d1c9", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/10", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1ca", + "bia": "8c94.1fcd.d1ca", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/11", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1cb", + "bia": "8c94.1fcd.d1cb", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:14", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "1000", + "input_pps": "0", + "output_pps": "1", + "input_packets": "7506443623", + "output_packets": "26847225982", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/12", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1cc", + "bia": "8c94.1fcd.d1cc", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:10", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "96897000", + "output_rate": "818617000", + "input_pps": "28031", + "output_pps": "96533", + "input_packets": "1329937941798", + "output_packets": "4532173701988", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/13", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1cd", + "bia": "8c94.1fcd.d1cd", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:14", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "1000", + "input_pps": "0", + "output_pps": "1", + "input_packets": "13253126610", + "output_packets": "4705866316", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/14", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1ce", + "bia": "8c94.1fcd.d1ce", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "SFP-10GBase-SR", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:10", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "403223000", + "output_rate": "146905000", + "input_pps": "45487", + "output_pps": "46276", + "input_packets": "2300544594949", + "output_packets": "955448637588", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/15", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1cf", + "bia": "8c94.1fcd.d1cf", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/16", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1d0", + "bia": "8c94.1fcd.d1d0", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/17", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1d1", + "bia": "8c94.1fcd.d1d1", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/18", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1d2", + "bia": "8c94.1fcd.d1d2", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "1000BaseSX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:28", + "last_output": "00:00:07", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "2000", + "output_rate": "19000", + "input_pps": "3", + "output_pps": "10", + "input_packets": "302247909", + "output_packets": "84972394", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/19", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1d3", + "bia": "8c94.1fcd.d1d3", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/20", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1d4", + "bia": "8c94.1fcd.d1d4", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "unknown", + "bandwidth": "10000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "2y48w", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/21", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1d5", + "bia": "8c94.1fcd.d1d5", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/22", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1d6", + "bia": "8c94.1fcd.d1d6", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/23", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1d7", + "bia": "8c94.1fcd.d1d7", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "25000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "Class-based queueing", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "TwentyFiveGigE2/0/24", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Twenty Five Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1d8", + "bia": "8c94.1fcd.d1d8", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "1000BaseLX SFP", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:46", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "1104035", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "HundredGigE2/0/25", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Hundred Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1d9", + "bia": "8c94.1fcd.d1d9", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "40Gb/s", + "media_type": "QSFP 40G SR BD SFP", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:32", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "297530000", + "output_rate": "331000", + "input_pps": "40316", + "output_pps": "203", + "input_packets": "933795964851", + "output_packets": "895990044004", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "HundredGigE2/0/26", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "Hundred Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1da", + "bia": "8c94.1fcd.d1da", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "40Gb/s", + "media_type": "QSFP 40G SR BD SFP", + "bandwidth": "40000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:40", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "266852000", + "output_rate": "788000", + "input_pps": "35787", + "output_pps": "294", + "input_packets": "940193581466", + "output_packets": "899476968220", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "HundredGigE2/0/27", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Hundred Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1db", + "bia": "8c94.1fcd.d1db", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "100000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "HundredGigE2/0/28", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "Hundred Gigabit Ethernet", + "mac_address": "8c94.1fcd.d1dc", + "bia": "8c94.1fcd.d1dc", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "unknown", + "bandwidth": "100000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Port-channel11", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "EtherChannel", + "mac_address": "8c94.1fcd.95c2", + "bia": "8c94.1fcd.95c2", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "N/A", + "bandwidth": "1000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "2000", + "output_rate": "3000", + "input_pps": "3", + "output_pps": "6", + "input_packets": "274456871697", + "output_packets": "1276315086272", + "runts": "0", + "giants": "0", + "input_errors": "1", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Port-channel12", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "EtherChannel", + "mac_address": "8c94.1fcd.95c3", + "bia": "8c94.1fcd.95c3", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "N/A", + "bandwidth": "2000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:01", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "287000", + "output_rate": "262000", + "input_pps": "70", + "output_pps": "69", + "input_packets": "1486261331671", + "output_packets": "2286626502283", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Port-channel13", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "EtherChannel", + "mac_address": "8c94.1fcd.d1cb", + "bia": "8c94.1fcd.d1cb", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "N/A", + "bandwidth": "20000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "4000", + "input_pps": "0", + "output_pps": "4", + "input_packets": "14939177835", + "output_packets": "27959388985", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Port-channel14", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "EtherChannel", + "mac_address": "8c94.1fcd.d1cd", + "bia": "8c94.1fcd.d1cd", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "N/A", + "bandwidth": "20000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "2y33w", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "5000", + "input_pps": "0", + "output_pps": "7", + "input_packets": "26509321062", + "output_packets": "14311093065", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Port-channel21", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "EtherChannel", + "mac_address": "8c94.1fcd.d1c1", + "bia": "8c94.1fcd.d1c1", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "N/A", + "bandwidth": "2000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "834394000", + "output_rate": "176942000", + "input_pps": "98100", + "output_pps": "52180", + "input_packets": "4535640766033", + "output_packets": "1358903281306", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Port-channel22", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "EtherChannel", + "mac_address": "8c94.1fcd.d1c3", + "bia": "8c94.1fcd.d1c3", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "N/A", + "bandwidth": "2000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:01", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "150275000", + "output_rate": "810400000", + "input_pps": "47469", + "output_pps": "93320", + "input_packets": "963610855489", + "output_packets": "2353717109621", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Port-channel23", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "EtherChannel", + "mac_address": "8c94.1fcd.95cc", + "bia": "8c94.1fcd.95cc", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "N/A", + "bandwidth": "20000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "172129000", + "output_rate": "810726000", + "input_pps": "51404", + "output_pps": "96266", + "input_packets": "2657695154446", + "output_packets": "4827218070840", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Port-channel24", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "EtherChannel", + "mac_address": "8c94.1fcd.95ce", + "bia": "8c94.1fcd.95ce", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "10Gb/s", + "media_type": "N/A", + "bandwidth": "20000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "779514000", + "output_rate": "143626000", + "input_pps": "89754", + "output_pps": "45305", + "input_packets": "4601877242667", + "output_packets": "2437114265344", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Port-channel25", + "link_status": "down", + "protocol_status": "down (notconnect)", + "hardware_type": "EtherChannel", + "mac_address": "0000.0000.0000", + "bia": "0000.0000.0000", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Auto-duplex", + "speed": "Auto-speed", + "media_type": "N/A", + "bandwidth": "100000 Kbit", + "delay": "100 usec", + "encapsulation": "ARPA", + "last_input": "never", + "last_output": "never", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "0", + "output_rate": "0", + "input_pps": "0", + "output_pps": "0", + "input_packets": "0", + "output_packets": "0", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + }, + { + "interface": "Port-channel30", + "link_status": "up", + "protocol_status": "up (connected)", + "hardware_type": "EtherChannel", + "mac_address": "8c94.1fcd.95d2", + "bia": "8c94.1fcd.95d2", + "description": "a description", + "ip_address": "", + "prefix_length": "", + "mtu": "9216", + "duplex": "Full-duplex", + "speed": "1000Mb/s", + "media_type": "N/A", + "bandwidth": "2000000 Kbit", + "delay": "10 usec", + "encapsulation": "ARPA", + "last_input": "00:00:01", + "last_output": "00:00:00", + "last_output_hang": "never", + "queue_strategy": "fifo", + "input_rate": "16000", + "output_rate": "18000", + "input_pps": "15", + "output_pps": "12", + "input_packets": "383948416", + "output_packets": "207352609", + "runts": "0", + "giants": "0", + "input_errors": "0", + "crc": "0", + "frame": "0", + "overrun": "0", + "abort": "", + "output_errors": "0", + "vlan_id": "", + "vlan_id_inner": "", + "vlan_id_outer": "" + } + ], + "show vlan": [ + { + "vlan_id": "1", + "vlan_name": "default", + "status": "active", + "interfaces": [ + "Twe1/0/1", + "Twe1/0/6", + "Twe1/0/9", + "Twe1/0/10", + "Twe1/0/16", + "Twe1/0/17", + "Twe1/0/19", + "Twe1/0/20", + "Twe1/0/21", + "Twe1/0/22", + "Hu1/0/27", + "Hu1/0/28", + "Twe2/0/5", + "Twe2/0/6", + "Twe2/0/9", + "Twe2/0/10", + "Twe2/0/15", + "Twe2/0/16", + "Twe2/0/17", + "Twe2/0/19", + "Twe2/0/20", + "Twe2/0/21", + "Twe2/0/22", + "Twe2/0/23", + "Hu2/0/27", + "Hu2/0/28" + ] + }, + { + "vlan_id": "100", + "vlan_name": "a vlan name", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "101", + "vlan_name": "a vlan name", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "200", + "vlan_name": "a vlan name", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "300", + "vlan_name": "a vlan name", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "301", + "vlan_name": "a vlan name", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "1002", + "vlan_name": "a vlan name", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1003", + "vlan_name": "a vlan name", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1004", + "vlan_name": "fddinet-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "1005", + "vlan_name": "trnet-default", + "status": "act/unsup", + "interfaces": [] + }, + { + "vlan_id": "2100", + "vlan_name": "vlanNumber", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "2103", + "vlan_name": "vlanNumber", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "2950", + "vlan_name": "vlanNumber", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "2960", + "vlan_name": "vlanNumber", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3001", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3100", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3101", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3102", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3103", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3104", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3105", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3106", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3111", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3200", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3201", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3202", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3203", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3204", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3205", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3300", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3301", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3302", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3303", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3304", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3305", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3400", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + }, + { + "vlan_id": "3500", + "vlan_name": "vlan", + "status": "active", + "interfaces": [] + } + ], + "show interfaces switchport": [ + { + "interface": "Twe1/0/1", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down (suspended member of bundle Po11)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "2100-2110" + ] + }, + { + "interface": "Twe1/0/2", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po11)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "2100-2110" + ] + }, + { + "interface": "Twe1/0/3", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po12)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "3100-3110,3200-3205,3400" + ] + }, + { + "interface": "Twe1/0/4", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po12)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "3100-3110,3200-3205,3400" + ] + }, + { + "interface": "Twe1/0/5", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "3001" + ] + }, + { + "interface": "Twe1/0/6", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "down", + "admin_mode": "static access", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe1/0/7", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "100,101,200-210,300-310,2950,2960,3200-3205,3300-3305", + "3400,3500" + ] + }, + { + "interface": "Twe1/0/8", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "100,101,200-210,300-310,2950,2960,3200-3205,3300-3305", + "3400,3500" + ] + }, + { + "interface": "Twe1/0/9", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe1/0/10", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe1/0/11", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po13)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "200-210,2100-2110" + ] + }, + { + "interface": "Twe1/0/12", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po23)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "200-210,2100-2110" + ] + }, + { + "interface": "Twe1/0/13", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po14)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "300-310,3100-3110" + ] + }, + { + "interface": "Twe1/0/14", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po24)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "300-310,3100-3110" + ] + }, + { + "interface": "Twe1/0/15", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "2103" + ] + }, + { + "interface": "Twe1/0/16", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe1/0/17", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe1/0/18", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po30)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "300,2950,2960" + ] + }, + { + "interface": "Twe1/0/19", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe1/0/20", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe1/0/21", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe1/0/22", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe1/0/23", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "2103,3001" + ] + }, + { + "interface": "Twe1/0/24", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "4094", + "native_vlan": "4094", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Hu1/0/25", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "4094", + "native_vlan": "4094", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Hu1/0/26", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "4094", + "native_vlan": "4094", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Hu1/0/27", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Hu1/0/28", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe2/0/1", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po21)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "2100-2110" + ] + }, + { + "interface": "Twe2/0/2", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po21)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "2100-2110" + ] + }, + { + "interface": "Twe2/0/3", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po22)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "3100-3110,3300-3305,3500" + ] + }, + { + "interface": "Twe2/0/4", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po22)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "3100-3110,3300-3305,3500" + ] + }, + { + "interface": "Twe2/0/5", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe2/0/6", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe2/0/7", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "100,101,200-210,300-310,2950,2960,3200-3205,3300-3305", + "3400,3500" + ] + }, + { + "interface": "Twe2/0/8", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "100,101,200-210,300-310,2950,2960,3200-3205,3300-3305", + "3400,3500" + ] + }, + { + "interface": "Twe2/0/9", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe2/0/10", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe2/0/11", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po13)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "200-210,2100-2110" + ] + }, + { + "interface": "Twe2/0/12", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po23)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "200-210,2100-2110" + ] + }, + { + "interface": "Twe2/0/13", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po14)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "300-310,3100-3110" + ] + }, + { + "interface": "Twe2/0/14", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po24)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "300-310,3100-3110" + ] + }, + { + "interface": "Twe2/0/15", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe2/0/16", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe2/0/17", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe2/0/18", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk (member of bundle Po30)", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "300,2950,2960" + ] + }, + { + "interface": "Twe2/0/19", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe2/0/20", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe2/0/21", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe2/0/22", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe2/0/23", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Twe2/0/24", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "4094", + "native_vlan": "4094", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Hu2/0/25", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "4094", + "native_vlan": "4094", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Hu2/0/26", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "mode": "static access", + "admin_mode": "static access", + "access_vlan": "4094", + "native_vlan": "4094", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Hu2/0/27", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Hu2/0/28", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "dynamic auto", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "ALL" + ] + }, + { + "interface": "Po11", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "2100-2110" + ] + }, + { + "interface": "Po12", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "3100-3110,3200-3205,3400" + ] + }, + { + "interface": "Po13", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "200-210,2100-2110" + ] + }, + { + "interface": "Po14", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "300-310,3100-3110" + ] + }, + { + "interface": "Po21", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "2100-2110" + ] + }, + { + "interface": "Po22", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "3100-3110,3300-3305,3500" + ] + }, + { + "interface": "Po23", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "200-210,2100-2110" + ] + }, + { + "interface": "Po24", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "300-310,3100-3110" + ] + }, + { + "interface": "Po25", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "down", + "admin_mode": "trunk", + "access_vlan": "unassigned", + "native_vlan": "0", + "voice_vlan": "none", + "trunking_vlans": [ + "4000" + ] + }, + { + "interface": "Po30", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "On", + "mode": "trunk", + "admin_mode": "trunk", + "access_vlan": "1", + "native_vlan": "1", + "voice_vlan": "none", + "trunking_vlans": [ + "300,2950,2960" + ] + } + ], + "show etherchannel summary": [ + { + "group": "11", + "bundle_name": "Po11", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "member_interface": [ + "Twe1/0/1", + "Twe1/0/2" + ], + "member_interface_status": [ + "D", + "P" + ] + }, + { + "group": "12", + "bundle_name": "Po12", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "member_interface": [ + "Twe1/0/3", + "Twe1/0/4" + ], + "member_interface_status": [ + "P", + "P" + ] + }, + { + "group": "13", + "bundle_name": "Po13", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "member_interface": [ + "Twe1/0/11", + "Twe2/0/11" + ], + "member_interface_status": [ + "P", + "P" + ] + }, + { + "group": "14", + "bundle_name": "Po14", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "member_interface": [ + "Twe1/0/13", + "Twe2/0/13" + ], + "member_interface_status": [ + "P", + "P" + ] + }, + { + "group": "21", + "bundle_name": "Po21", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "member_interface": [ + "Twe2/0/1", + "Twe2/0/2" + ], + "member_interface_status": [ + "P", + "P" + ] + }, + { + "group": "22", + "bundle_name": "Po22", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "member_interface": [ + "Twe2/0/3", + "Twe2/0/4" + ], + "member_interface_status": [ + "P", + "P" + ] + }, + { + "group": "23", + "bundle_name": "Po23", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "member_interface": [ + "Twe1/0/12", + "Twe2/0/12" + ], + "member_interface_status": [ + "P", + "P" + ] + }, + { + "group": "24", + "bundle_name": "Po24", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "member_interface": [ + "Twe1/0/14", + "Twe2/0/14" + ], + "member_interface_status": [ + "P", + "P" + ] + }, + { + "group": "25", + "bundle_name": "Po25", + "bundle_status": "SD", + "bundle_protocol": "-", + "member_interface": [], + "member_interface_status": [] + }, + { + "group": "30", + "bundle_name": "Po30", + "bundle_status": "SU", + "bundle_protocol": "LACP", + "member_interface": [ + "Twe1/0/18", + "Twe2/0/18" + ], + "member_interface_status": [ + "P", + "P" + ] + } + ], + "show ip interface": [ + { + "interface": "Vlan1", + "link_status": "administratively down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "GigabitEthernet0/0", + "link_status": "up", + "protocol_status": "up", + "ip_address": [ + "198.51.100.1" + ], + "prefix_length": [ + "28" + ], + "vrf": "Mgmt-vrf", + "mtu": "1500", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/1", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/2", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/3", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/4", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/5", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/6", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/7", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/8", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/9", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/10", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/11", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/12", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/13", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/14", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/15", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/16", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/17", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/18", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/19", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/20", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/21", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/22", + "link_status": "administratively down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/23", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE1/0/24", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "HundredGigE1/0/25", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "HundredGigE1/0/26", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "HundredGigE1/0/27", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "HundredGigE1/0/28", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/1", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/2", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/3", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/4", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/5", + "link_status": "administratively down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/6", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/7", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/8", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/9", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/10", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/11", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/12", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/13", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/14", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/15", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/16", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/17", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/18", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/19", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/20", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/21", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/22", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/23", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "TwentyFiveGigE2/0/24", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "HundredGigE2/0/25", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "HundredGigE2/0/26", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "HundredGigE2/0/27", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "HundredGigE2/0/28", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Port-channel11", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Port-channel12", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Port-channel13", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Port-channel14", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Port-channel21", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Port-channel22", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Port-channel23", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Port-channel24", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Port-channel25", + "link_status": "down", + "protocol_status": "down", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + }, + { + "interface": "Port-channel30", + "link_status": "up", + "protocol_status": "up", + "ip_address": [], + "prefix_length": [], + "vrf": "", + "mtu": "", + "ip_helper": [], + "outgoing_acl": "", + "inbound_acl": "" + } + ] +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/command_mappers/mock_cisco_ios.yml b/nautobot_device_onboarding/tests/mock/command_mappers/mock_cisco_ios.yml new file mode 100755 index 00000000..7e665658 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/command_mappers/mock_cisco_ios.yml @@ -0,0 +1,123 @@ +--- +sync_devices: + hostname: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].hostname" + serial: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].serial[]" + post_processor: "{{ obj | unique | first }}" + device_type: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].hardware[]" + post_processor: "{{ obj | unique | first }}" + mgmt_interface: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?ip_address=='{{ obj }}'].{name: interface, enabled: link_status}" + post_processor: "{{ (obj | selectattr('enabled', 'eq', 'up') | list | first ).name }}" + mask_length: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?ip_address=='{{ obj }}'].prefix_length" + post_processor: "{{ obj | unique | first }}" +sync_network_data: + pre_processor: + vlan_map: + commands: + - command: "show vlan" + parser: "textfsm" + jpath: "[*].{id: vlan_id, name: vlan_name}" + # post_processor: "{% set result={} %}{% for entry in obj %}{{ result.update({entry['id']: entry['name']}) or '' }}{% endfor %}{{ result }}" + serial: + commands: + - command: "show version" + parser: "textfsm" + jpath: "[*].serial[]" + interfaces: + root_key: true + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[*].interface" # when root_key=true this extracted value is what becomes interable in keys using __ under `current_key`. + post_processor: "{% set result={} %}{% for interface in obj %}{{ result.update({interface: {}}) or '' }}{% endfor %}{{ result | tojson }}" + interfaces__type: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].hardware_type" + post_processor: "{{ obj[0] | map_interface_type }}" + interfaces__ip_addresses: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].{ip_address: ip_address, prefix_length: prefix_length}" + iterable_type: "list" + interfaces__mtu: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].mtu" + interfaces__mac_address: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].mac_address" + interfaces__description: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].description" + interfaces__link_status: + commands: + - command: "show interfaces" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].link_status" + post_processor: "{{ obj[0] | interface_status_to_bool }}" + interfaces__802.1Q_mode: + commands: + - command: "show interfaces switchport" + parser: "textfsm" + jpath: "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, trunking_vlans: trunking_vlans}" + post_processor: "{{ obj | interface_mode_logic }}" + iterable_type: "str" + interfaces__lag: + commands: + - command: "show etherchannel summary" + parser: "textfsm" + jpath: "[?contains(@.member_interface, `{{ current_key | abbreviated_interface_name }}`)].bundle_name" + post_processor: "{% if obj | length > 0 %}{{ obj[0] | canonical_interface_name }}{% else %}{{ obj }}{% endif %}" + iterable_type: "str" + interfaces__vrf: + commands: + - command: "show ip interface" + parser: "textfsm" + jpath: "[?interface=='{{ current_key }}'].{name:vrf}" + post_processor: "{% if obj | length > 0 %}{{ obj[0] | key_exist_or_default('name') | tojson }}{% else %}{{ obj }}{% endif %}" + iterable_type: "dict" + interfaces__tagged_vlans: + commands: + - command: "show interfaces switchport" + parser: "textfsm" + jpath: "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, access_vlan: access_vlan, trunking_vlans: trunking_vlans}" + post_processor: "{{ obj | get_vlan_data | tojson }}" + interfaces__untagged_vlan: + commands: + - command: "show interfaces switchport" + parser: "textfsm" + jpath: "[?contains(interface, '{{ current_key | abbreviated_interface_name }}')].native_vlan" + post_processor: "{% if obj | length > 0 %}{{ vlan_map | selectattr('id', 'eq', obj[0]) | list | tojson }}{% else %}{{ obj }}{% endif %}" + iterable_type: "dict" + cables: + commands: + - command: "show cdp neighbors detail" + parser: "textfsm" + jpath: "[*].{local_interface:local_interface, remote_interface:neighbor_interface, remote_device:neighbor_name}" diff --git a/nautobot_device_onboarding/tests/mock/juniper_junos/command_getter_result_1.json b/nautobot_device_onboarding/tests/mock/juniper_junos/command_getter_result_1.json new file mode 100755 index 00000000..55674c28 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/juniper_junos/command_getter_result_1.json @@ -0,0 +1,25972 @@ +{ + "show interfaces routing-instance all terse | display json": {}, + "show version | display json": { + "software-information": [ + { + "host-name": [ + { + "data": "JUNOS-PE1" + } + ], + "product-model": [ + { + "data": "mx10-t" + } + ], + "product-name": [ + { + "data": "mx10-t" + } + ], + "junos-version": [ + { + "data": "20.4R3.8" + } + ], + "package-information": [ + { + "name": [ + { + "data": "junos" + } + ], + "comment": [ + { + "data": "JUNOS Base OS boot [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jbase" + } + ], + "comment": [ + { + "data": "JUNOS Base OS Software Suite [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jcrypto" + } + ], + "comment": [ + { + "data": "JUNOS Crypto Software Suite [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jpfe" + } + ], + "comment": [ + { + "data": "JUNOS Packet Forwarding Engine Support (MX80) [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jdocs" + } + ], + "comment": [ + { + "data": "JUNOS Online Documentation [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jsdn-powerpc" + } + ], + "comment": [ + { + "data": "JUNOS SDN Software Suite [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jservices-alg" + } + ], + "comment": [ + { + "data": "JUNOS Services Application Level Gateways [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jservices-cos" + } + ], + "comment": [ + { + "data": "JUNOS Services COS [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jservices-jflow" + } + ], + "comment": [ + { + "data": "JUNOS Services Jflow Container package [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jservices-sfw" + } + ], + "comment": [ + { + "data": "JUNOS Services Stateful Firewall [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jservices-nat" + } + ], + "comment": [ + { + "data": "JUNOS Services NAT [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jservices-rpm" + } + ], + "comment": [ + { + "data": "JUNOS Services RPM [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jservices-softwire" + } + ], + "comment": [ + { + "data": "JUNOS Services SOFTWIRE [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jservices-cpcd" + } + ], + "comment": [ + { + "data": "JUNOS Services Captive Portal and Content Delivery Container package [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jmacsec" + } + ], + "comment": [ + { + "data": "JUNOS Macsec Software Suite [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jservices-crypto-base" + } + ], + "comment": [ + { + "data": "JUNOS Services Crypto [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jservices-ipsec" + } + ], + "comment": [ + { + "data": "JUNOS Services IPSec [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jservices-rtcom" + } + ], + "comment": [ + { + "data": "JUNOS Services RTCOM [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jservices-ssl" + } + ], + "comment": [ + { + "data": "JUNOS Services SSL [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jservices-tcp-log" + } + ], + "comment": [ + { + "data": "JUNOS Services TCP-LOG [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jcrypto-dp-support" + } + ], + "comment": [ + { + "data": "JUNOS DP Crypto Software Software Suite [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "py-base-powerpc" + } + ], + "comment": [ + { + "data": "JUNOS py-base-powerpc [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "py-base2-powerpc" + } + ], + "comment": [ + { + "data": "JUNOS py-base2-powerpc [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "py-extensions-powerpc" + } + ], + "comment": [ + { + "data": "JUNOS py-extensions-powerpc [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "py-extensions2-powerpc" + } + ], + "comment": [ + { + "data": "JUNOS py-extensions2-powerpc [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jsd" + } + ], + "comment": [ + { + "data": "JUNOS jsd [powerpc-20.4R3.8-jet-1]" + } + ] + }, + { + "name": [ + { + "data": "jkernel" + } + ], + "comment": [ + { + "data": "JUNOS Kernel Software Suite [20.4R3.8]" + } + ] + }, + { + "name": [ + { + "data": "jroute" + } + ], + "comment": [ + { + "data": "JUNOS Routing Software Suite [20.4R3.8]" + } + ] + } + ] + } + ] + }, + "show chassis hardware | display json": { + "chassis-inventory": [ + { + "attributes": { + "xmlns": "http://xml.juniper.net/junos/20.4R0/junos-chassis" + }, + "chassis": [ + { + "attributes": { + "junos:style": "inventory" + }, + "name": [ + { + "data": "Chassis" + } + ], + "serial-number": [ + { + "data": "T9958" + } + ], + "description": [ + { + "data": "MX10-T" + } + ], + "chassis-module": [ + { + "name": [ + { + "data": "Midplane" + } + ], + "version": [ + { + "data": "REV 11" + } + ], + "part-number": [ + { + "data": "711-038213" + } + ], + "serial-number": [ + { + "data": "ABCH3315" + } + ], + "description": [ + { + "data": "MX10-T" + } + ], + "clei-code": [ + { + "data": "IPM8T10BRA" + } + ], + "model-number": [ + { + "data": "CHAS-MX10-T-S" + } + ] + }, + { + "name": [ + { + "data": "PEM 0" + } + ], + "version": [ + { + "data": "Rev 05" + } + ], + "part-number": [ + { + "data": "740-028288" + } + ], + "serial-number": [ + { + "data": "XH07209" + } + ], + "description": [ + { + "data": "AC Power Entry Module" + } + ], + "clei-code": [ + { + "data": "COUPAFAEAB" + } + ], + "model-number": [ + { + "data": "PWR-MX80-AC-S" + } + ] + }, + { + "name": [ + { + "data": "PEM 1" + } + ], + "version": [ + { + "data": "Rev 05" + } + ], + "part-number": [ + { + "data": "740-028288" + } + ], + "serial-number": [ + { + "data": "1GA74320781" + } + ], + "description": [ + { + "data": "AC Power Entry Module" + } + ], + "clei-code": [ + { + "data": "COUPAFAEAB" + } + ], + "model-number": [ + { + "data": "PWR-MX80-AC-S" + } + ] + }, + { + "name": [ + { + "data": "Routing Engine" + } + ], + "part-number": [ + { + "data": "BUILTIN" + } + ], + "serial-number": [ + { + "data": "BUILTIN" + } + ], + "description": [ + { + "data": "Routing Engine" + } + ] + }, + { + "name": [ + { + "data": "TFEB 0" + } + ], + "part-number": [ + { + "data": "BUILTIN" + } + ], + "serial-number": [ + { + "data": "BUILTIN" + } + ], + "description": [ + { + "data": "Forwarding Engine Processor" + } + ], + "chassis-sub-module": [ + { + "name": [ + { + "data": "QXM 0" + } + ], + "version": [ + { + "data": "REV 07" + } + ], + "part-number": [ + { + "data": "711-028408" + } + ], + "serial-number": [ + { + "data": "ABCT6963" + } + ], + "description": [ + { + "data": "MPC QXM" + } + ] + } + ] + }, + { + "name": [ + { + "data": "FPC 0" + } + ], + "part-number": [ + { + "data": "BUILTIN" + } + ], + "serial-number": [ + { + "data": "BUILTIN" + } + ], + "description": [ + { + "data": "MPC BUILTIN" + } + ], + "chassis-sub-module": [ + { + "name": [ + { + "data": "MIC 0" + } + ], + "part-number": [ + { + "data": "BUILTIN" + } + ], + "serial-number": [ + { + "data": "BUILTIN" + } + ], + "description": [ + { + "data": "4x 10GE XFP" + } + ], + "chassis-sub-sub-module": [ + { + "name": [ + { + "data": "PIC 0" + } + ], + "part-number": [ + { + "data": "BUILTIN" + } + ], + "serial-number": [ + { + "data": "BUILTIN" + } + ], + "description": [ + { + "data": "4x 10GE XFP" + } + ], + "chassis-sub-sub-sub-module": [ + { + "name": [ + { + "data": "Xcvr 0" + } + ], + "version": [ + { + "data": "REV 01" + } + ], + "part-number": [ + { + "data": "740-033777" + } + ], + "serial-number": [ + { + "data": "US106VG" + } + ], + "description": [ + { + "data": "XFP-10G-SR" + } + ] + }, + { + "name": [ + { + "data": "Xcvr 1" + } + ], + "version": [ + { + "data": "REV 01" + } + ], + "part-number": [ + { + "data": "740-031833" + } + ], + "serial-number": [ + { + "data": "USC13PJ" + } + ], + "description": [ + { + "data": "XFP-10G-LR" + } + ] + }, + { + "name": [ + { + "data": "Xcvr 2" + } + ], + "version": [ + { + "data": "REV 01" + } + ], + "part-number": [ + { + "data": "740-033777" + } + ], + "serial-number": [ + { + "data": "US106YC" + } + ], + "description": [ + { + "data": "XFP-10G-SR" + } + ] + }, + { + "name": [ + { + "data": "Xcvr 3" + } + ], + "version": [ + { + "data": "REV 01" + } + ], + "part-number": [ + { + "data": "740-033777" + } + ], + "serial-number": [ + { + "data": "US80D22" + } + ], + "description": [ + { + "data": "XFP-10G-SR" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "FPC 1" + } + ], + "part-number": [ + { + "data": "BUILTIN" + } + ], + "serial-number": [ + { + "data": "BUILTIN" + } + ], + "description": [ + { + "data": "MPC BUILTIN" + } + ], + "chassis-sub-module": [ + { + "name": [ + { + "data": "MIC 0" + } + ], + "version": [ + { + "data": "REV 30" + } + ], + "part-number": [ + { + "data": "750-028392" + } + ], + "serial-number": [ + { + "data": "ABCV8313" + } + ], + "description": [ + { + "data": "3D 20x 1GE(LAN) SFP" + } + ], + "clei-code": [ + { + "data": "COUIBCRBAA" + } + ], + "model-number": [ + { + "data": "MIC-3D-20GE-SFP" + } + ], + "chassis-sub-sub-module": [ + { + "name": [ + { + "data": "PIC 0" + } + ], + "part-number": [ + { + "data": "BUILTIN" + } + ], + "serial-number": [ + { + "data": "BUILTIN" + } + ], + "description": [ + { + "data": "10x 1GE(LAN) SFP" + } + ], + "chassis-sub-sub-sub-module": [ + { + "name": [ + { + "data": "Xcvr 0" + } + ], + "version": [ + { + "data": "REV 02" + } + ], + "part-number": [ + { + "data": "740-013111" + } + ], + "serial-number": [ + { + "data": "C350184" + } + ], + "description": [ + { + "data": "SFP-T" + } + ] + }, + { + "name": [ + { + "data": "Xcvr 9" + } + ], + "version": [ + { + "data": "REV 02" + } + ], + "part-number": [ + { + "data": "740-013111" + } + ], + "serial-number": [ + { + "data": "C411975" + } + ], + "description": [ + { + "data": "SFP-T" + } + ] + } + ] + }, + { + "name": [ + { + "data": "PIC 1" + } + ], + "part-number": [ + { + "data": "BUILTIN" + } + ], + "serial-number": [ + { + "data": "BUILTIN" + } + ], + "description": [ + { + "data": "10x 1GE(LAN) SFP" + } + ], + "chassis-sub-sub-sub-module": [ + { + "name": [ + { + "data": "Xcvr 0" + } + ], + "version": [ + { + "data": "REV 02" + } + ], + "part-number": [ + { + "data": "740-013111" + } + ], + "serial-number": [ + { + "data": "C350850" + } + ], + "description": [ + { + "data": "SFP-T" + } + ] + }, + { + "name": [ + { + "data": "Xcvr 6" + } + ], + "version": [ + { + "data": "REV 01" + } + ], + "part-number": [ + { + "data": "740-031850" + } + ], + "serial-number": [ + { + "data": "NS63YB1" + } + ], + "description": [ + { + "data": "SFP-LX10" + } + ] + }, + { + "name": [ + { + "data": "Xcvr 7" + } + ], + "version": [ + { + "data": "REV 01" + } + ], + "part-number": [ + { + "data": "740-031850" + } + ], + "serial-number": [ + { + "data": "NS639CT" + } + ], + "description": [ + { + "data": "SFP-LX10" + } + ] + }, + { + "name": [ + { + "data": "Xcvr 8" + } + ], + "version": [ + { + "data": "REV 01" + } + ], + "part-number": [ + { + "data": "740-031850" + } + ], + "serial-number": [ + { + "data": "NS63YFV" + } + ], + "description": [ + { + "data": "SFP-LX10" + } + ] + }, + { + "name": [ + { + "data": "Xcvr 9" + } + ], + "version": [ + { + "data": "REV 01" + } + ], + "part-number": [ + { + "data": "740-031850" + } + ], + "serial-number": [ + { + "data": "NS639EF" + } + ], + "description": [ + { + "data": "SFP-LX10" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "MIC 1" + } + ], + "version": [ + { + "data": "REV 25" + } + ], + "part-number": [ + { + "data": "750-028380" + } + ], + "serial-number": [ + { + "data": "ABCY2259" + } + ], + "description": [ + { + "data": "3D 2x 10GE XFP" + } + ], + "clei-code": [ + { + "data": "COUIBDXBAA" + } + ], + "model-number": [ + { + "data": "MIC-3D-2XGE-XFP" + } + ], + "chassis-sub-sub-module": [ + { + "name": [ + { + "data": "PIC 2" + } + ], + "part-number": [ + { + "data": "BUILTIN" + } + ], + "serial-number": [ + { + "data": "BUILTIN" + } + ], + "description": [ + { + "data": "1x 10GE XFP" + } + ], + "chassis-sub-sub-sub-module": [ + { + "name": [ + { + "data": "Xcvr 0" + } + ], + "version": [ + { + "data": "REV 01" + } + ], + "part-number": [ + { + "data": "740-031833" + } + ], + "serial-number": [ + { + "data": "USC13CF" + } + ], + "description": [ + { + "data": "XFP-10G-LR" + } + ] + } + ] + }, + { + "name": [ + { + "data": "PIC 3" + } + ], + "part-number": [ + { + "data": "BUILTIN" + } + ], + "serial-number": [ + { + "data": "BUILTIN" + } + ], + "description": [ + { + "data": "1x 10GE XFP" + } + ], + "chassis-sub-sub-sub-module": [ + { + "name": [ + { + "data": "Xcvr 0" + } + ], + "version": [ + { + "data": "REV 01" + } + ], + "part-number": [ + { + "data": "740-033777" + } + ], + "serial-number": [ + { + "data": "US80D2Y" + } + ], + "description": [ + { + "data": "XFP-10G-SR" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "Fan Tray" + } + ], + "description": [ + { + "data": "Fan Tray" + } + ], + "model-number": [ + { + "data": "FANTRAY-MX80-S" + } + ] + } + ] + } + ] + } + ] + }, + "show interfaces terse | display json": { + "interface-information": [ + { + "attributes": { + "xmlns": "http://xml.juniper.net/junos/20.4R0/junos-interface", + "junos:style": "terse" + }, + "physical-interface": [ + { + "name": [ + { + "data": "lc-0/0/0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "lc-0/0/0.32769" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "vpls" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "pfe-0/0/0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "pfe-0/0/0.16383" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "pfh-0/0/0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "pfh-0/0/0.16383" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ] + } + ] + }, + { + "name": [ + { + "data": "pfh-0/0/0.16384" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "xe-0/0/0.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "aenet" + } + ], + "ae-bundle-name": [ + { + "data": "ae0.0" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/1" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "xe-0/0/1.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "aenet" + } + ], + "ae-bundle-name": [ + { + "data": "ae14.0" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/2" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "xe-0/0/2.3100" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "13.65.98.49/30", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/2.3101" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "13.65.106.245/30", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/2.3102" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "13.65.104.1/30", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/2.3103" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "13.65.106.241/30", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/2.3104" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "13.65.106.249/30", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/2.32767" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "multiservice" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/3" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "xe-0/0/3.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "ccc" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ge-1/0/0.2950" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "13.65.209.193/28", + "attributes": { + "junos:emit": "emit" + } + } + ] + }, + { + "ifa-local": [ + { + "data": "13.65.209.194/28", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/0.2953" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "13.65.145.73/29", + "attributes": { + "junos:emit": "emit" + } + } + ] + }, + { + "ifa-local": [ + { + "data": "13.65.145.75/29", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/0.32767" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "multiservice" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/1" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/2" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/3" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/4" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/5" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/6" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/7" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/8" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/9" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/0" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/1" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/2" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/3" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/4" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/5" + } + ], + "admin-status": [ + { + "data": "down" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/6" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ge-1/1/6.16386" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "filter-information": [ + {} + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/7" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ge-1/1/7.16386" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "filter-information": [ + {} + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/8" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ge-1/1/8.16386" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/9" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ge-1/1/9.16386" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ] + } + ] + }, + { + "name": [ + { + "data": "xe-1/2/0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "xe-1/2/0.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "aenet" + } + ], + "ae-bundle-name": [ + { + "data": "ae11.0" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-1/3/0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "xe-1/3/0.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "ccc" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "ae0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ae0.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "13.65.230.30/31", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ] + }, + { + "address-family-name": [ + { + "data": "mpls", + "attributes": { + "junos:emit": "emit" + } + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "ae3" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "down" + } + ] + }, + { + "name": [ + { + "data": "ae11" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ae11.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "13.65.231.109/31", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ] + }, + { + "address-family-name": [ + { + "data": "mpls", + "attributes": { + "junos:emit": "emit" + } + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "ae14" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ae14.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "13.65.231.118/31", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ] + }, + { + "address-family-name": [ + { + "data": "mpls", + "attributes": { + "junos:emit": "emit" + } + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "cbp0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "demux0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "dsc" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "em0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "em0.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "10.0.0.4/8", + "attributes": { + "junos:emit": "emit" + } + } + ] + }, + { + "ifa-local": [ + { + "data": "133.4.74.1/2", + "attributes": { + "junos:emit": "emit" + } + } + ] + }, + { + "ifa-local": [ + { + "data": "133.4.74.4/2", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "af06:e3b6:61bb:2fc8:9b44:3a70:4d3a:8304/64", + "attributes": { + "junos:emit": "emit" + } + } + ] + }, + { + "ifa-local": [ + { + "data": "af47:43cc:8ad3:722:24ff:168e:79be:a504/64", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "tnp" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "0x4", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "em1" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "em1.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "10.0.0.1/8", + "attributes": { + "junos:emit": "emit" + } + } + ] + }, + { + "ifa-local": [ + { + "data": "133.4.74.1/2", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "tnp" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "0x4", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "esi" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "fti0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "fti1" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "fti2" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "fti3" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "fti4" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "fti5" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "fti6" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "fti7" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "fxp0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "fxp0.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "gre" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "ipip" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "irb" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "jsrv" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "jsrv.1" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "133.4.74.127/2", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lo0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "lo0.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "198.51.100.1" + } + ], + "ifa-destination": [ + { + "data": "0/0", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "49.013.0065.0224.0113", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "af06:e3b6:61bb:2fc8:ad6c:c0a1:8292:d9ff" + } + ], + "ifa-destination": [ + { + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lo0.16384" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "interface-address": [ + { + "ifa-local": [ + { + "data": "66.33.236.1" + } + ], + "ifa-destination": [ + { + "data": "0/0", + "attributes": { + "junos:emit": "emit" + } + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lo0.16385" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "lsi.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.1" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.2" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.3" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.4" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.5" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.6" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.7" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "me0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "me0.0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "filter-information": [ + {} + ] + } + ] + }, + { + "name": [ + { + "data": "mtun" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "pimd" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "pime" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "pip0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "pp0" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "rbeb" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "tap" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + }, + { + "name": [ + { + "data": "vtep" + } + ], + "admin-status": [ + { + "data": "up" + } + ], + "oper-status": [ + { + "data": "up" + } + ] + } + ] + } + ] + }, + "show route protocol direct | display json": { + "route-information": [ + { + "attributes": { + "xmlns": "http://xml.juniper.net/junos/20.4R0/junos-routing" + }, + "route-table": [ + { + "comment": "keepalive", + "table-name": [ + { + "data": "inet.0" + } + ], + "destination-count": [ + { + "data": "305" + } + ], + "total-route-count": [ + { + "data": "305" + } + ], + "active-route-count": [ + { + "data": "297" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "8" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ], + "rt": [ + { + "attributes": { + "junos:style": "brief" + }, + "rt-destination": [ + { + "data": "198.51.100.1/32" + } + ], + "rt-entry": [ + { + "active-tag": [ + { + "data": "*" + } + ], + "current-active": [ + { + "data": [ + null + ] + } + ], + "last-active": [ + { + "data": [ + null + ] + } + ], + "protocol-name": [ + { + "data": "Direct" + } + ], + "preference": [ + { + "data": "0" + } + ], + "age": [ + { + "data": "74w6d 03:22:53", + "attributes": { + "junos:seconds": "45285773" + } + } + ], + "nh": [ + { + "selected-next-hop": [ + { + "data": [ + null + ] + } + ], + "via": [ + { + "data": "lo0.0" + } + ] + } + ] + } + ] + }, + { + "attributes": { + "junos:style": "brief" + }, + "rt-destination": [ + { + "data": "13.65.231.108/31" + } + ], + "rt-entry": [ + { + "active-tag": [ + { + "data": "*" + } + ], + "current-active": [ + { + "data": [ + null + ] + } + ], + "last-active": [ + { + "data": [ + null + ] + } + ], + "protocol-name": [ + { + "data": "Direct" + } + ], + "preference": [ + { + "data": "0" + } + ], + "age": [ + { + "data": "5d 12:23:33", + "attributes": { + "junos:seconds": "476613" + } + } + ], + "nh": [ + { + "selected-next-hop": [ + { + "data": [ + null + ] + } + ], + "via": [ + { + "data": "ae11.0" + } + ] + } + ] + } + ] + }, + { + "attributes": { + "junos:style": "brief" + }, + "rt-destination": [ + { + "data": "13.65.231.118/31" + } + ], + "rt-entry": [ + { + "active-tag": [ + { + "data": "*" + } + ], + "current-active": [ + { + "data": [ + null + ] + } + ], + "last-active": [ + { + "data": [ + null + ] + } + ], + "protocol-name": [ + { + "data": "Direct" + } + ], + "preference": [ + { + "data": "0" + } + ], + "age": [ + { + "data": "34w0d 10:32:07", + "attributes": { + "junos:seconds": "20601127" + } + } + ], + "nh": [ + { + "selected-next-hop": [ + { + "data": [ + null + ] + } + ], + "via": [ + { + "data": "ae14.0" + } + ] + } + ] + } + ] + }, + { + "attributes": { + "junos:style": "brief" + }, + "rt-destination": [ + { + "data": "13.65.230.30/31" + } + ], + "rt-entry": [ + { + "active-tag": [ + { + "data": "*" + } + ], + "current-active": [ + { + "data": [ + null + ] + } + ], + "last-active": [ + { + "data": [ + null + ] + } + ], + "protocol-name": [ + { + "data": "Direct" + } + ], + "preference": [ + { + "data": "0" + } + ], + "age": [ + { + "data": "74w6d 03:21:29", + "attributes": { + "junos:seconds": "45285689" + } + } + ], + "nh": [ + { + "selected-next-hop": [ + { + "data": [ + null + ] + } + ], + "via": [ + { + "data": "ae0.0" + } + ] + } + ] + } + ] + } + ] + }, + { + "table-name": [ + { + "data": "inet.3" + } + ], + "destination-count": [ + { + "data": "97" + } + ], + "total-route-count": [ + { + "data": "97" + } + ], + "active-route-count": [ + { + "data": "97" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-CORP.inet.0" + } + ], + "destination-count": [ + { + "data": "7298" + } + ], + "total-route-count": [ + { + "data": "37654" + } + ], + "active-route-count": [ + { + "data": "7297" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "1" + } + ], + "rt": [ + { + "attributes": { + "junos:style": "brief" + }, + "rt-destination": [ + { + "data": "13.65.98.48/30" + } + ], + "rt-entry": [ + { + "active-tag": [ + { + "data": "*" + } + ], + "current-active": [ + { + "data": [ + null + ] + } + ], + "last-active": [ + { + "data": [ + null + ] + } + ], + "protocol-name": [ + { + "data": "Direct" + } + ], + "preference": [ + { + "data": "0" + } + ], + "age": [ + { + "data": "74w6d 03:21:31", + "attributes": { + "junos:seconds": "45285691" + } + } + ], + "nh": [ + { + "selected-next-hop": [ + { + "data": [ + null + ] + } + ], + "via": [ + { + "data": "xe-0/0/2.3100" + } + ] + } + ] + } + ] + }, + { + "attributes": { + "junos:style": "brief" + }, + "rt-destination": [ + { + "data": "13.65.145.72/29" + } + ], + "rt-entry": [ + { + "active-tag": [ + { + "data": "*" + } + ], + "current-active": [ + { + "data": [ + null + ] + } + ], + "last-active": [ + { + "data": [ + null + ] + } + ], + "protocol-name": [ + { + "data": "Direct" + } + ], + "preference": [ + { + "data": "0" + } + ], + "age": [ + { + "data": "74w6d 03:21:22", + "attributes": { + "junos:seconds": "45285682" + } + } + ], + "nh": [ + { + "selected-next-hop": [ + { + "data": [ + null + ] + } + ], + "via": [ + { + "data": "ge-1/0/0.2953" + } + ] + } + ] + } + ] + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-DEVICES.inet.0" + } + ], + "destination-count": [ + { + "data": "724" + } + ], + "total-route-count": [ + { + "data": "3616" + } + ], + "active-route-count": [ + { + "data": "724" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "2" + } + ], + "rt": [ + { + "attributes": { + "junos:style": "brief" + }, + "rt-destination": [ + { + "data": "13.65.106.248/30" + } + ], + "rt-entry": [ + { + "active-tag": [ + { + "data": "*" + } + ], + "current-active": [ + { + "data": [ + null + ] + } + ], + "last-active": [ + { + "data": [ + null + ] + } + ], + "protocol-name": [ + { + "data": "Direct" + } + ], + "preference": [ + { + "data": "0" + } + ], + "age": [ + { + "data": "74w6d 03:21:31", + "attributes": { + "junos:seconds": "45285691" + } + } + ], + "nh": [ + { + "selected-next-hop": [ + { + "data": [ + null + ] + } + ], + "via": [ + { + "data": "xe-0/0/2.3104" + } + ] + } + ] + } + ] + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-GUEST.inet.0" + } + ], + "destination-count": [ + { + "data": "834" + } + ], + "total-route-count": [ + { + "data": "4246" + } + ], + "active-route-count": [ + { + "data": "834" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "3" + } + ], + "rt": [ + { + "attributes": { + "junos:style": "brief" + }, + "rt-destination": [ + { + "data": "13.65.106.244/30" + } + ], + "rt-entry": [ + { + "active-tag": [ + { + "data": "*" + } + ], + "current-active": [ + { + "data": [ + null + ] + } + ], + "last-active": [ + { + "data": [ + null + ] + } + ], + "protocol-name": [ + { + "data": "Direct" + } + ], + "preference": [ + { + "data": "0" + } + ], + "age": [ + { + "data": "74w6d 03:21:31", + "attributes": { + "junos:seconds": "45285691" + } + } + ], + "nh": [ + { + "selected-next-hop": [ + { + "data": [ + null + ] + } + ], + "via": [ + { + "data": "xe-0/0/2.3101" + } + ] + } + ] + } + ] + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-IND.inet.0" + } + ], + "destination-count": [ + { + "data": "722" + } + ], + "total-route-count": [ + { + "data": "3598" + } + ], + "active-route-count": [ + { + "data": "721" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "3" + } + ], + "rt": [ + { + "attributes": { + "junos:style": "brief" + }, + "rt-destination": [ + { + "data": "13.65.104.0/30" + } + ], + "rt-entry": [ + { + "active-tag": [ + { + "data": "*" + } + ], + "current-active": [ + { + "data": [ + null + ] + } + ], + "last-active": [ + { + "data": [ + null + ] + } + ], + "protocol-name": [ + { + "data": "Direct" + } + ], + "preference": [ + { + "data": "0" + } + ], + "age": [ + { + "data": "74w6d 03:21:31", + "attributes": { + "junos:seconds": "45285691" + } + } + ], + "nh": [ + { + "selected-next-hop": [ + { + "data": [ + null + ] + } + ], + "via": [ + { + "data": "xe-0/0/2.3102" + } + ] + } + ] + } + ] + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-NETMGMT.inet.0" + } + ], + "destination-count": [ + { + "data": "128" + } + ], + "total-route-count": [ + { + "data": "497" + } + ], + "active-route-count": [ + { + "data": "128" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ], + "rt": [ + { + "attributes": { + "junos:style": "brief" + }, + "rt-destination": [ + { + "data": "13.65.209.192/28" + } + ], + "rt-entry": [ + { + "active-tag": [ + { + "data": "*" + } + ], + "current-active": [ + { + "data": [ + null + ] + } + ], + "last-active": [ + { + "data": [ + null + ] + } + ], + "protocol-name": [ + { + "data": "Direct" + } + ], + "preference": [ + { + "data": "0" + } + ], + "age": [ + { + "data": "74w6d 03:21:22", + "attributes": { + "junos:seconds": "45285682" + } + } + ], + "nh": [ + { + "selected-next-hop": [ + { + "data": [ + null + ] + } + ], + "via": [ + { + "data": "ge-1/0/0.2950" + } + ] + } + ] + } + ] + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-RED.inet.0" + } + ], + "destination-count": [ + { + "data": "212" + } + ], + "total-route-count": [ + { + "data": "878" + } + ], + "active-route-count": [ + { + "data": "212" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-USER.inet.0" + } + ], + "destination-count": [ + { + "data": "797" + } + ], + "total-route-count": [ + { + "data": "4054" + } + ], + "active-route-count": [ + { + "data": "797" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "2" + } + ], + "rt": [ + { + "attributes": { + "junos:style": "brief" + }, + "rt-destination": [ + { + "data": "13.65.106.240/30" + } + ], + "rt-entry": [ + { + "active-tag": [ + { + "data": "*" + } + ], + "current-active": [ + { + "data": [ + null + ] + } + ], + "last-active": [ + { + "data": [ + null + ] + } + ], + "protocol-name": [ + { + "data": "Direct" + } + ], + "preference": [ + { + "data": "0" + } + ], + "age": [ + { + "data": "74w6d 03:21:31", + "attributes": { + "junos:seconds": "45285691" + } + } + ], + "nh": [ + { + "selected-next-hop": [ + { + "data": [ + null + ] + } + ], + "via": [ + { + "data": "xe-0/0/2.3103" + } + ] + } + ] + } + ] + } + ] + }, + { + "table-name": [ + { + "data": "iso.0" + } + ], + "destination-count": [ + { + "data": "1" + } + ], + "total-route-count": [ + { + "data": "1" + } + ], + "active-route-count": [ + { + "data": "1" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ], + "rt": [ + { + "attributes": { + "junos:style": "brief" + }, + "rt-destination": [ + { + "data": "49.013.0065.0224.0113" + } + ], + "rt-prefix-length": [ + { + "data": "72", + "attributes": { + "junos:emit": "emit" + } + } + ], + "rt-entry": [ + { + "active-tag": [ + { + "data": "*" + } + ], + "current-active": [ + { + "data": [ + null + ] + } + ], + "last-active": [ + { + "data": [ + null + ] + } + ], + "protocol-name": [ + { + "data": "Direct" + } + ], + "preference": [ + { + "data": "0" + } + ], + "age": [ + { + "data": "74w6d 03:22:53", + "attributes": { + "junos:seconds": "45285773" + } + } + ], + "nh": [ + { + "selected-next-hop": [ + { + "data": [ + null + ] + } + ], + "via": [ + { + "data": "lo0.0" + } + ] + } + ] + } + ] + } + ] + }, + { + "table-name": [ + { + "data": "mpls.0" + } + ], + "destination-count": [ + { + "data": "1468" + } + ], + "total-route-count": [ + { + "data": "1468" + } + ], + "active-route-count": [ + { + "data": "1468" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ] + }, + { + "table-name": [ + { + "data": "bgp.l3vpn.0" + } + ], + "destination-count": [ + { + "data": "27044" + } + ], + "total-route-count": [ + { + "data": "54088" + } + ], + "active-route-count": [ + { + "data": "27044" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ] + }, + { + "table-name": [ + { + "data": "inet6.0" + } + ], + "destination-count": [ + { + "data": "2" + } + ], + "total-route-count": [ + { + "data": "2" + } + ], + "active-route-count": [ + { + "data": "2" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ], + "rt": [ + { + "attributes": { + "junos:style": "brief" + }, + "rt-destination": [ + { + "data": "af06:e3b6:61bb:2fc8:ad6c:c0a1:8292:d9ff/128", + "attributes": { + "junos:emit": "emit" + } + } + ], + "rt-entry": [ + { + "active-tag": [ + { + "data": "*" + } + ], + "current-active": [ + { + "data": [ + null + ] + } + ], + "last-active": [ + { + "data": [ + null + ] + } + ], + "protocol-name": [ + { + "data": "Direct" + } + ], + "preference": [ + { + "data": "0" + } + ], + "age": [ + { + "data": "74w6d 03:22:54", + "attributes": { + "junos:seconds": "45285774" + } + } + ], + "nh": [ + { + "selected-next-hop": [ + { + "data": [ + null + ] + } + ], + "via": [ + { + "data": "lo0.0" + } + ] + } + ] + } + ] + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-COMMSVCS.inet6.0" + } + ], + "destination-count": [ + { + "data": "1" + } + ], + "total-route-count": [ + { + "data": "1" + } + ], + "active-route-count": [ + { + "data": "1" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-CORP.inet6.0" + } + ], + "destination-count": [ + { + "data": "15" + } + ], + "total-route-count": [ + { + "data": "69" + } + ], + "active-route-count": [ + { + "data": "1" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "68" + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-DEVICES.inet6.0" + } + ], + "destination-count": [ + { + "data": "20" + } + ], + "total-route-count": [ + { + "data": "81" + } + ], + "active-route-count": [ + { + "data": "1" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "80" + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-GUEST.inet6.0" + } + ], + "destination-count": [ + { + "data": "21" + } + ], + "total-route-count": [ + { + "data": "85" + } + ], + "active-route-count": [ + { + "data": "1" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "84" + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-IND.inet6.0" + } + ], + "destination-count": [ + { + "data": "14" + } + ], + "total-route-count": [ + { + "data": "65" + } + ], + "active-route-count": [ + { + "data": "1" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "64" + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-NETMGMT.inet6.0" + } + ], + "destination-count": [ + { + "data": "1" + } + ], + "total-route-count": [ + { + "data": "1" + } + ], + "active-route-count": [ + { + "data": "1" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-RED.inet6.0" + } + ], + "destination-count": [ + { + "data": "14" + } + ], + "total-route-count": [ + { + "data": "53" + } + ], + "active-route-count": [ + { + "data": "1" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "52" + } + ] + }, + { + "table-name": [ + { + "data": "L32a2f5a-USER.inet6.0" + } + ], + "destination-count": [ + { + "data": "14" + } + ], + "total-route-count": [ + { + "data": "65" + } + ], + "active-route-count": [ + { + "data": "1" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "64" + } + ] + }, + { + "table-name": [ + { + "data": "bgp.l2vpn.0" + } + ], + "destination-count": [ + { + "data": "2" + } + ], + "total-route-count": [ + { + "data": "4" + } + ], + "active-route-count": [ + { + "data": "2" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ] + }, + { + "table-name": [ + { + "data": "DEFPE1-ACME9525PE1.l2vpn.0" + } + ], + "destination-count": [ + { + "data": "2" + } + ], + "total-route-count": [ + { + "data": "3" + } + ], + "active-route-count": [ + { + "data": "2" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ] + }, + { + "table-name": [ + { + "data": "ABC525PE1-ABCPE1.l2vpn.0" + } + ], + "destination-count": [ + { + "data": "2" + } + ], + "total-route-count": [ + { + "data": "3" + } + ], + "active-route-count": [ + { + "data": "2" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ] + }, + { + "table-name": [ + { + "data": "bgp.l3vpn-inet6.0" + } + ], + "destination-count": [ + { + "data": "206" + } + ], + "total-route-count": [ + { + "data": "412" + } + ], + "active-route-count": [ + { + "data": "0" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "412" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ] + }, + { + "table-name": [ + { + "data": "bgp.mvpn.0" + } + ], + "destination-count": [ + { + "data": "4" + } + ], + "total-route-count": [ + { + "data": "6" + } + ], + "active-route-count": [ + { + "data": "4" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ] + }, + { + "table-name": [ + { + "data": "bgp.mvpn-inet6.0" + } + ], + "destination-count": [ + { + "data": "4" + } + ], + "total-route-count": [ + { + "data": "6" + } + ], + "active-route-count": [ + { + "data": "4" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ] + }, + { + "table-name": [ + { + "data": "DEFPE1-ACME9525PE1.l2id.0" + } + ], + "destination-count": [ + { + "data": "2" + } + ], + "total-route-count": [ + { + "data": "4" + } + ], + "active-route-count": [ + { + "data": "2" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ] + }, + { + "table-name": [ + { + "data": "ABC525PE1-ABCPE1.l2id.0" + } + ], + "destination-count": [ + { + "data": "2" + } + ], + "total-route-count": [ + { + "data": "4" + } + ], + "active-route-count": [ + { + "data": "2" + } + ], + "holddown-route-count": [ + { + "data": "0" + } + ], + "hidden-route-count": [ + { + "data": "0" + } + ], + "restart-state": [ + { + "data": "Complete" + } + ] + } + ] + } + ] + }, + "show interfaces | display json": { + "interface-information": [ + { + "attributes": { + "xmlns": "http://xml.juniper.net/junos/20.4R0/junos-interface", + "junos:style": "normal" + }, + "physical-interface": [ + { + "name": [ + { + "data": "lc-0/0/0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "149" + } + ], + "snmp-index": [ + { + "data": "506" + } + ], + "speed": [ + { + "data": "800mbps" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + {} + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "lc-0/0/0.32769" + } + ], + "local-index": [ + { + "data": "348" + } + ], + "snmp-index": [ + { + "data": "507" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "logical-interface-bandwidth": [ + { + "data": "0" + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "vpls" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "pfe-0/0/0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "151" + } + ], + "snmp-index": [ + { + "data": "509" + } + ], + "speed": [ + { + "data": "800mbps" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + {} + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "pfe-0/0/0.16383" + } + ], + "local-index": [ + { + "data": "349" + } + ], + "snmp-index": [ + { + "data": "510" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "logical-interface-bandwidth": [ + { + "data": "0" + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-none": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-none": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "pfh-0/0/0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "150" + } + ], + "snmp-index": [ + { + "data": "508" + } + ], + "speed": [ + { + "data": "800mbps" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + {} + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "pfh-0/0/0.16383" + } + ], + "local-index": [ + { + "data": "350" + } + ], + "snmp-index": [ + { + "data": "511" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "logical-interface-bandwidth": [ + { + "data": "0" + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-none": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "pfh-0/0/0.16384" + } + ], + "local-index": [ + { + "data": "351" + } + ], + "snmp-index": [ + { + "data": "581" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "logical-interface-bandwidth": [ + { + "data": "0" + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "152" + } + ], + "snmp-index": [ + { + "data": "514" + } + ], + "description": [ + { + "data": "a description" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mtu": [ + { + "data": "1602" + } + ], + "mru": [ + { + "data": "1610" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "10Gbps" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "none" + } + ], + "if-flow-control": [ + { + "data": "disabled" + } + ], + "if-speed-cfg": [ + { + "data": "Auto" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:c0" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:00" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:31 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285694" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "51904024" + } + ], + "input-pps": [ + { + "data": "13081" + } + ], + "output-bps": [ + { + "data": "54142808" + } + ], + "output-pps": [ + { + "data": "9588" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "link-degrade-information": [ + { + "lnk-degrd-mon": [ + { + "data": "Disable" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "xe-0/0/0.0" + } + ], + "local-index": [ + { + "data": "352" + } + ], + "snmp-index": [ + { + "data": "579" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "422722821868" + } + ], + "output-packets": [ + { + "data": "316139252715" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "aenet" + } + ], + "ae-bundle-name": [ + { + "data": "ae0.0" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/1" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "153" + } + ], + "snmp-index": [ + { + "data": "515" + } + ], + "description": [ + { + "data": "a description" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mtu": [ + { + "data": "1602" + } + ], + "mru": [ + { + "data": "1610" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "10Gbps" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "none" + } + ], + "if-flow-control": [ + { + "data": "disabled" + } + ], + "if-speed-cfg": [ + { + "data": "Auto" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:c3" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:01" + } + ], + "interface-flapped": [ + { + "data": "2023-10-05 07:17:54 UTC (34w0d 10:32 ago)", + "attributes": { + "junos:seconds": "20601131" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "42775728" + } + ], + "input-pps": [ + { + "data": "8911" + } + ], + "output-bps": [ + { + "data": "55423152" + } + ], + "output-pps": [ + { + "data": "9375" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "46" + } + ], + "errored-blocks-seconds": [ + { + "data": "1517" + } + ] + } + ], + "link-degrade-information": [ + { + "lnk-degrd-mon": [ + { + "data": "Disable" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "xe-0/0/1.0" + } + ], + "local-index": [ + { + "data": "353" + } + ], + "snmp-index": [ + { + "data": "573" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "148544493810" + } + ], + "output-packets": [ + { + "data": "241637003895" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "aenet" + } + ], + "ae-bundle-name": [ + { + "data": "ae14.0" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/2" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "154" + } + ], + "snmp-index": [ + { + "data": "564" + } + ], + "description": [ + { + "data": "UNI : : ACME9525RL1- : Te1/2/8" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mtu": [ + { + "data": "1522" + } + ], + "mru": [ + { + "data": "1530" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "10Gbps" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "none" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-speed-cfg": [ + { + "data": "Auto" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:02" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:02" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:31 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285694" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "191627208" + } + ], + "output-pps": [ + { + "data": "22568" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "link-degrade-information": [ + { + "lnk-degrd-mon": [ + { + "data": "Disable" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "xe-0/0/2.3100" + } + ], + "local-index": [ + { + "data": "354" + } + ], + "snmp-index": [ + { + "data": "554" + } + ], + "description": [ + { + "data": "UNI : L32a2f5a-CORP : ACME9525RL1-VSS Ten 1/2/8" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "link-address": [ + { + "data": "[ 0x8100.3100 ] ", + "attributes": { + "junos:format": "VLAN-Tag [ 0x8100.3100 ] " + } + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "5370577" + } + ], + "output-packets": [ + { + "data": "146878731243" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1500" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "1" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-no-redirects": [ + { + "data": [ + null + ] + } + ], + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ], + "ifff-sample-input": [ + { + "data": [ + null + ] + } + ], + "ifff-sendbcast-pkt-to-re": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-current-default": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "13.65.98.48/30" + } + ], + "ifa-local": [ + { + "data": "13.65.98.49" + } + ], + "ifa-broadcast": [ + { + "data": "13.65.98.51" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/2.3101" + } + ], + "local-index": [ + { + "data": "355" + } + ], + "snmp-index": [ + { + "data": "548" + } + ], + "description": [ + { + "data": "UNI : L32a2f5a-GUEST : ACME9525RL1- : Te1/2/8 VID-3101" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "link-address": [ + { + "data": "[ 0x8100.3101 ] ", + "attributes": { + "junos:format": "VLAN-Tag [ 0x8100.3101 ] " + } + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "124920847" + } + ], + "output-packets": [ + { + "data": "1831595264" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1500" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "1" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-no-redirects": [ + { + "data": [ + null + ] + } + ], + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ], + "ifff-sample-input": [ + { + "data": [ + null + ] + } + ], + "ifff-sendbcast-pkt-to-re": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-current-default": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "13.65.106.244/30" + } + ], + "ifa-local": [ + { + "data": "13.65.106.245" + } + ], + "ifa-broadcast": [ + { + "data": "13.65.106.247" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/2.3102" + } + ], + "local-index": [ + { + "data": "356" + } + ], + "snmp-index": [ + { + "data": "550" + } + ], + "description": [ + { + "data": "UNI : L32a2f5a-IND : ACME9525RL1- : Te1/2/8 VID-3102" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "link-address": [ + { + "data": "[ 0x8100.3102 ] ", + "attributes": { + "junos:format": "VLAN-Tag [ 0x8100.3102 ] " + } + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "3148915" + } + ], + "output-packets": [ + { + "data": "3154101" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1500" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "1" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-no-redirects": [ + { + "data": [ + null + ] + } + ], + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ], + "ifff-sample-input": [ + { + "data": [ + null + ] + } + ], + "ifff-sendbcast-pkt-to-re": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-current-default": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "13.65.104.0/30" + } + ], + "ifa-local": [ + { + "data": "13.65.104.1" + } + ], + "ifa-broadcast": [ + { + "data": "13.65.104.3" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/2.3103" + } + ], + "local-index": [ + { + "data": "357" + } + ], + "snmp-index": [ + { + "data": "551" + } + ], + "description": [ + { + "data": "UNI : L32a2f5a-USER : ACME9525RL1- : Te1/2/8 VID-3103" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "link-address": [ + { + "data": "[ 0x8100.3103 ] ", + "attributes": { + "junos:format": "VLAN-Tag [ 0x8100.3103 ] " + } + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "166940786" + } + ], + "output-packets": [ + { + "data": "8632880481" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1500" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "1" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-no-redirects": [ + { + "data": [ + null + ] + } + ], + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ], + "ifff-sample-input": [ + { + "data": [ + null + ] + } + ], + "ifff-sendbcast-pkt-to-re": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-current-default": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "13.65.106.240/30" + } + ], + "ifa-local": [ + { + "data": "13.65.106.241" + } + ], + "ifa-broadcast": [ + { + "data": "13.65.106.243" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/2.3104" + } + ], + "local-index": [ + { + "data": "358" + } + ], + "snmp-index": [ + { + "data": "553" + } + ], + "description": [ + { + "data": "UNI : L32a2f5a-DEVICES : ACME9525RL1- : Te1/2/8 VID-3104" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "link-address": [ + { + "data": "[ 0x8100.3104 ] ", + "attributes": { + "junos:format": "VLAN-Tag [ 0x8100.3104 ] " + } + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "132288169" + } + ], + "output-packets": [ + { + "data": "446833213" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1500" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "1" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-no-redirects": [ + { + "data": [ + null + ] + } + ], + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ], + "ifff-sample-input": [ + { + "data": [ + null + ] + } + ], + "ifff-sendbcast-pkt-to-re": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-current-default": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "13.65.106.248/30" + } + ], + "ifa-local": [ + { + "data": "13.65.106.249" + } + ], + "ifa-broadcast": [ + { + "data": "13.65.106.251" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/2.32767" + } + ], + "local-index": [ + { + "data": "359" + } + ], + "snmp-index": [ + { + "data": "547" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "link-address": [ + { + "data": "[ 0x0000.0 ] ", + "attributes": { + "junos:format": "VLAN-Tag [ 0x0000.0 ] " + } + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "226096" + } + ], + "output-packets": [ + { + "data": "1631875" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "multiservice" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "ifff-none": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-0/0/3" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "155" + } + ], + "snmp-index": [ + { + "data": "565" + } + ], + "link-level-type": [ + { + "data": "Ethernet-CCC" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mtu": [ + { + "data": "1522" + } + ], + "mru": [ + { + "data": "1530" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "10Gbps" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "none" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-speed-cfg": [ + { + "data": "Auto" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:03" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:03" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:31 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285694" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "65240" + } + ], + "input-pps": [ + { + "data": "60" + } + ], + "output-bps": [ + { + "data": "29616" + } + ], + "output-pps": [ + { + "data": "38" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "link-degrade-information": [ + { + "lnk-degrd-mon": [ + { + "data": "Disable" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "xe-0/0/3.0" + } + ], + "local-index": [ + { + "data": "360" + } + ], + "snmp-index": [ + { + "data": "578" + } + ], + "description": [ + { + "data": "UNI : ABC525PE1-ABCPE1 : ACME9525RL1-VSS Ten1/2/6" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "Ethernet-CCC" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "5973057971" + } + ], + "output-packets": [ + { + "data": "2628850002" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "ccc" + } + ], + "mtu": [ + { + "data": "1522" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x402" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "156" + } + ], + "snmp-index": [ + { + "data": "516" + } + ], + "description": [ + { + "data": "UNI : : ACME9525-MS1 : Gi0/2" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1522" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1530" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-media-type": [ + { + "data": "Copper" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:60" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:60" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285685" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "7760" + } + ], + "input-pps": [ + { + "data": "5" + } + ], + "output-bps": [ + { + "data": "6304" + } + ], + "output-pps": [ + { + "data": "6" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ge-1/0/0.2950" + } + ], + "local-index": [ + { + "data": "361" + } + ], + "snmp-index": [ + { + "data": "513" + } + ], + "description": [ + { + "data": "UNI : L32a2f5a-NETMGMT : ACME9525-MS1 G0/2 VID-2950" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "link-address": [ + { + "data": "[ 0x8100.2950 ] ", + "attributes": { + "junos:format": "VLAN-Tag [ 0x8100.2950 ] " + } + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "137446420" + } + ], + "output-packets": [ + { + "data": "166509247" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1500" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "3" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ], + "ifff-sample-input": [ + { + "data": [ + null + ] + } + ], + "ifff-sendbcast-pkt-to-re": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "ifa-destination": [ + { + "data": "13.65.209.192/28" + } + ], + "ifa-local": [ + { + "data": "13.65.209.193" + } + ], + "ifa-broadcast": [ + { + "data": "13.65.209.207" + } + ] + }, + { + "ifa-flags": [ + { + "ifaf-current-default": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "13.65.209.192/28" + } + ], + "ifa-local": [ + { + "data": "13.65.209.194" + } + ], + "ifa-broadcast": [ + { + "data": "13.65.209.207" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/0.2953" + } + ], + "local-index": [ + { + "data": "362" + } + ], + "snmp-index": [ + { + "data": "583" + } + ], + "description": [ + { + "data": "UNI : L32a2f5a-CORP : ACME9525-MS1 : Gi0/2 VID-2953" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "link-address": [ + { + "data": "[ 0x8100.2953 ] ", + "attributes": { + "junos:format": "VLAN-Tag [ 0x8100.2953 ] " + } + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "39337184" + } + ], + "output-packets": [ + { + "data": "63100209" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1500" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "1" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-no-redirects": [ + { + "data": [ + null + ] + } + ], + "ifff-sample-input": [ + { + "data": [ + null + ] + } + ], + "ifff-sendbcast-pkt-to-re": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "ifa-destination": [ + { + "data": "13.65.145.72/29" + } + ], + "ifa-local": [ + { + "data": "13.65.145.73" + } + ], + "ifa-broadcast": [ + { + "data": "13.65.145.79" + } + ] + }, + { + "ifa-flags": [ + { + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "13.65.145.72/29" + } + ], + "ifa-local": [ + { + "data": "13.65.145.75" + } + ], + "ifa-broadcast": [ + { + "data": "13.65.145.79" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/0.32767" + } + ], + "local-index": [ + { + "data": "363" + } + ], + "snmp-index": [ + { + "data": "537" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "link-address": [ + { + "data": "[ 0x0000.0 ] ", + "attributes": { + "junos:format": "VLAN-Tag [ 0x0000.0 ] " + } + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "922889" + } + ], + "output-packets": [ + { + "data": "1631990" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "multiservice" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "ifff-none": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/1" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "157" + } + ], + "snmp-index": [ + { + "data": "517" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:61" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:61" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/2" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "158" + } + ], + "snmp-index": [ + { + "data": "518" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:62" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:62" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/3" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "159" + } + ], + "snmp-index": [ + { + "data": "519" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:63" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:63" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/4" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "160" + } + ], + "snmp-index": [ + { + "data": "520" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:64" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:64" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/5" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "161" + } + ], + "snmp-index": [ + { + "data": "521" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:65" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:65" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/6" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "162" + } + ], + "snmp-index": [ + { + "data": "522" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:66" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:66" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/7" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "163" + } + ], + "snmp-index": [ + { + "data": "523" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:67" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:67" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/8" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "164" + } + ], + "snmp-index": [ + { + "data": "524" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:68" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:68" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/0/9" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "165" + } + ], + "snmp-index": [ + { + "data": "525" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-media-type": [ + { + "data": "Copper" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:69" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:69" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/0" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "166" + } + ], + "snmp-index": [ + { + "data": "526" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-media-type": [ + { + "data": "Copper" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:6c" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:6c" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/1" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "167" + } + ], + "snmp-index": [ + { + "data": "527" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:6d" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:6d" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/2" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "168" + } + ], + "snmp-index": [ + { + "data": "528" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:6e" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:6e" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/3" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "169" + } + ], + "snmp-index": [ + { + "data": "529" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:6f" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:6f" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/4" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "170" + } + ], + "snmp-index": [ + { + "data": "530" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:70" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:70" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/5" + } + ], + "admin-status": [ + { + "data": "down", + "attributes": { + "junos:format": "Administratively down" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "171" + } + ], + "snmp-index": [ + { + "data": "531" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:71" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:71" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/6" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "172" + } + ], + "snmp-index": [ + { + "data": "532" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-media-type": [ + { + "data": "Fiber" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:72" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:72" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:40 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285686" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ge-1/1/6.16386" + } + ], + "local-index": [ + { + "data": "364" + } + ], + "snmp-index": [ + { + "data": "587" + } + ], + "if-config-flags": [ + { + "iff-device-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/7" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "173" + } + ], + "snmp-index": [ + { + "data": "533" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-media-type": [ + { + "data": "Fiber" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-down": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:73" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:73" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:41 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285685" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "ethernet-alarm-link-down": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ge-1/1/7.16386" + } + ], + "local-index": [ + { + "data": "365" + } + ], + "snmp-index": [ + { + "data": "588" + } + ], + "if-config-flags": [ + { + "iff-device-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/8" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "174" + } + ], + "snmp-index": [ + { + "data": "534" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-media-type": [ + { + "data": "Fiber" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:74" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:74" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:43 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285683" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ge-1/1/8.16386" + } + ], + "local-index": [ + { + "data": "366" + } + ], + "snmp-index": [ + { + "data": "589" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "1631844" + } + ], + "output-packets": [ + { + "data": "1631762" + } + ] + } + ], + "filter-information": [ + {} + ] + } + ] + }, + { + "name": [ + { + "data": "ge-1/1/9" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "175" + } + ], + "snmp-index": [ + { + "data": "535" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mru": [ + { + "data": "1522" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "eth-switch-error": [ + { + "data": "none" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-auto-negotiation": [ + { + "data": "enabled" + } + ], + "if-remote-fault": [ + { + "data": "online" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-media-type": [ + { + "data": "Fiber" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:75" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:75" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:43 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285683" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "ethernet-fec-mode": [ + { + "attributes": { + "junos:style": "verbose" + }, + "enabled_fec_mode": [ + {} + ] + } + ], + "ethernet-fec-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "fec_ccw_count": [ + { + "data": "0" + } + ], + "fec_nccw_count": [ + { + "data": "0" + } + ], + "fec_ccw_error_rate": [ + { + "data": "0" + } + ], + "fec_nccw_error_rate": [ + { + "data": "0" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ge-1/1/9.16386" + } + ], + "local-index": [ + { + "data": "367" + } + ], + "snmp-index": [ + { + "data": "590" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "1631925" + } + ], + "output-packets": [ + { + "data": "1631842" + } + ] + } + ], + "filter-information": [ + {} + ] + } + ] + }, + { + "name": [ + { + "data": "xe-1/2/0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "176" + } + ], + "snmp-index": [ + { + "data": "570" + } + ], + "description": [ + { + "data": "a description" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mtu": [ + { + "data": "1602" + } + ], + "mru": [ + { + "data": "1610" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "10Gbps" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "none" + } + ], + "if-flow-control": [ + { + "data": "disabled" + } + ], + "if-speed-cfg": [ + { + "data": "Auto" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:c2" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:78" + } + ], + "interface-flapped": [ + { + "data": "2024-05-25 05:26:26 UTC (5d 12:23 ago)", + "attributes": { + "junos:seconds": "476620" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "302063576" + } + ], + "input-pps": [ + { + "data": "41582" + } + ], + "output-bps": [ + { + "data": "94851768" + } + ], + "output-pps": [ + { + "data": "22367" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "4" + } + ] + } + ], + "link-degrade-information": [ + { + "lnk-degrd-mon": [ + { + "data": "Disable" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "xe-1/2/0.0" + } + ], + "local-index": [ + { + "data": "368" + } + ], + "snmp-index": [ + { + "data": "576" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "519367958190" + } + ], + "output-packets": [ + { + "data": "444407262191" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "aenet" + } + ], + "ae-bundle-name": [ + { + "data": "ae11.0" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "xe-1/3/0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "177" + } + ], + "snmp-index": [ + { + "data": "571" + } + ], + "link-level-type": [ + { + "data": "Ethernet-CCC" + } + ], + "sonet-mode": [ + { + "data": "LAN-PHY" + } + ], + "mtu": [ + { + "data": "1522" + } + ], + "mru": [ + { + "data": "1530" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "10Gbps" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "ld-pdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "none" + } + ], + "if-flow-control": [ + { + "data": "enabled" + } + ], + "if-speed-cfg": [ + { + "data": "Auto" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "physical-interface-cos-information": [ + { + "physical-interface-cos-hw-max-queues": [ + { + "data": "8" + } + ], + "physical-interface-cos-use-max-queues": [ + { + "data": "8" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:84" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:84" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:43 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285683" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "228080" + } + ], + "input-pps": [ + { + "data": "129" + } + ], + "output-bps": [ + { + "data": "359744" + } + ], + "output-pps": [ + { + "data": "134" + } + ] + } + ], + "active-alarms": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "active-defects": [ + { + "interface-alarms": [ + { + "alarm-not-present": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ], + "ethernet-pcs-statistics": [ + { + "attributes": { + "junos:style": "verbose" + }, + "bit-error-seconds": [ + { + "data": "0" + } + ], + "errored-blocks-seconds": [ + { + "data": "0" + } + ] + } + ], + "link-degrade-information": [ + { + "lnk-degrd-mon": [ + { + "data": "Disable" + } + ] + } + ], + "interface-transmit-statistics": [ + { + "data": "Disabled" + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "xe-1/3/0.0" + } + ], + "local-index": [ + { + "data": "369" + } + ], + "snmp-index": [ + { + "data": "582" + } + ], + "description": [ + { + "data": "UNI : DEFPE1-ACME9525PE1 : ACME9525RL1-VSS Ten1/2/7" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "Ethernet-CCC" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "12319781793" + } + ], + "output-packets": [ + { + "data": "9935446027" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "ccc" + } + ], + "mtu": [ + { + "data": "1522" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x402" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "ae0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "129" + } + ], + "snmp-index": [ + { + "data": "538" + } + ], + "description": [ + { + "data": "a description" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1602" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "10Gbps" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "disabled" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "minimum-links-in-aggregate": [ + { + "data": "1" + } + ], + "minimum-bandwidth-in-aggregate": [ + { + "data": "1bps" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:c0" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:c0" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:33 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285693" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "51904024" + } + ], + "input-pps": [ + { + "data": "13081" + } + ], + "output-bps": [ + { + "data": "54142880" + } + ], + "output-pps": [ + { + "data": "9588" + } + ] + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ae0.0" + } + ], + "local-index": [ + { + "data": "345" + } + ], + "snmp-index": [ + { + "data": "559" + } + ], + "description": [ + { + "data": "a description" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "lag-traffic-statistics": [ + { + "lag-bundle": [ + { + "input-packets": [ + { + "data": "422721190005" + } + ], + "input-pps": [ + { + "data": "13081" + } + ], + "input-bytes": [ + { + "data": "409595610055470" + } + ], + "input-bps": [ + { + "data": "51904024" + } + ], + "output-packets": [ + { + "data": "316137621010" + } + ], + "output-pps": [ + { + "data": "9587" + } + ], + "output-bytes": [ + { + "data": "171636424156222" + } + ], + "output-bps": [ + { + "data": "54141760" + } + ] + } + ], + "lag-adaptive-statistics": [ + { + "adaptive-adjusts": [ + { + "data": "0" + } + ], + "adaptive-scans": [ + { + "data": "0" + } + ], + "adaptive-updates": [ + { + "data": "0" + } + ] + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1588" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "1" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-sample-input": [ + { + "data": [ + null + ] + } + ], + "ifff-sendbcast-pkt-to-re": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "13.65.230.30/31" + } + ], + "ifa-local": [ + { + "data": "13.65.230.30" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ], + "mtu": [ + { + "data": "1585" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "mpls" + } + ], + "mtu": [ + { + "data": "1576" + } + ], + "maximum-labels": [ + { + "data": "3" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "ae3" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "130" + } + ], + "snmp-index": [ + { + "data": "541" + } + ], + "description": [ + { + "data": "UMI" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "Unspecified" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "disabled" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "minimum-links-in-aggregate": [ + { + "data": "1" + } + ], + "minimum-bandwidth-in-aggregate": [ + { + "data": "1bps" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:c1" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:c1" + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:28:20 UTC (74w6d 03:21 ago)", + "attributes": { + "junos:seconds": "45285706" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "0" + } + ], + "input-pps": [ + { + "data": "0" + } + ], + "output-bps": [ + { + "data": "0" + } + ], + "output-pps": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "ae11" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "131" + } + ], + "snmp-index": [ + { + "data": "549" + } + ], + "description": [ + { + "data": "a description" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1602" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "10Gbps" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "disabled" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "minimum-links-in-aggregate": [ + { + "data": "1" + } + ], + "minimum-bandwidth-in-aggregate": [ + { + "data": "1bps" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:c2" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:c2" + } + ], + "interface-flapped": [ + { + "data": "2024-05-25 05:26:30 UTC (5d 12:23 ago)", + "attributes": { + "junos:seconds": "476616" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "302063576" + } + ], + "input-pps": [ + { + "data": "41582" + } + ], + "output-bps": [ + { + "data": "94875288" + } + ], + "output-pps": [ + { + "data": "22367" + } + ] + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ae11.0" + } + ], + "local-index": [ + { + "data": "346" + } + ], + "snmp-index": [ + { + "data": "575" + } + ], + "description": [ + { + "data": "a description" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "lag-traffic-statistics": [ + { + "lag-bundle": [ + { + "input-packets": [ + { + "data": "696258617483" + } + ], + "input-pps": [ + { + "data": "41582" + } + ], + "input-bytes": [ + { + "data": "493816197619868" + } + ], + "input-bps": [ + { + "data": "302063576" + } + ], + "output-packets": [ + { + "data": "560054827039" + } + ], + "output-pps": [ + { + "data": "21877" + } + ], + "output-bytes": [ + { + "data": "492432915273815" + } + ], + "output-bps": [ + { + "data": "93864728" + } + ] + } + ], + "lag-adaptive-statistics": [ + { + "adaptive-adjusts": [ + { + "data": "0" + } + ], + "adaptive-scans": [ + { + "data": "0" + } + ], + "adaptive-updates": [ + { + "data": "0" + } + ] + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1588" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "1" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-sample-input": [ + { + "data": [ + null + ] + } + ], + "ifff-sendbcast-pkt-to-re": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "13.65.231.108/31" + } + ], + "ifa-local": [ + { + "data": "13.65.231.109" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ], + "mtu": [ + { + "data": "1585" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "mpls" + } + ], + "mtu": [ + { + "data": "1576" + } + ], + "maximum-labels": [ + { + "data": "3" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "ae14" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "132" + } + ], + "snmp-index": [ + { + "data": "552" + } + ], + "description": [ + { + "data": "a description" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1602" + } + ], + "source-filtering": [ + { + "data": "disabled" + } + ], + "speed": [ + { + "data": "10Gbps" + } + ], + "bpdu-error": [ + { + "data": "none" + } + ], + "l2pt-error": [ + { + "data": "none" + } + ], + "loopback": [ + { + "data": "disabled" + } + ], + "if-flow-control": [ + { + "data": "disabled" + } + ], + "pad-to-minimum-frame-size": [ + { + "data": "Disabled" + } + ], + "minimum-links-in-aggregate": [ + { + "data": "1" + } + ], + "minimum-bandwidth-in-aggregate": [ + { + "data": "1bps" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:c3" + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:c3" + } + ], + "interface-flapped": [ + { + "data": "2023-10-05 07:17:56 UTC (34w0d 10:32 ago)", + "attributes": { + "junos:seconds": "20601130" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-bps": [ + { + "data": "42775728" + } + ], + "input-pps": [ + { + "data": "8911" + } + ], + "output-bps": [ + { + "data": "55423200" + } + ], + "output-pps": [ + { + "data": "9375" + } + ] + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "ae14.0" + } + ], + "local-index": [ + { + "data": "347" + } + ], + "snmp-index": [ + { + "data": "572" + } + ], + "description": [ + { + "data": "a description" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "lag-traffic-statistics": [ + { + "lag-bundle": [ + { + "input-packets": [ + { + "data": "148542354516" + } + ], + "input-pps": [ + { + "data": "8910" + } + ], + "input-bytes": [ + { + "data": "93250239099946" + } + ], + "input-bps": [ + { + "data": "42775232" + } + ], + "output-packets": [ + { + "data": "241635372179" + } + ], + "output-pps": [ + { + "data": "9374" + } + ], + "output-bytes": [ + { + "data": "205817095420187" + } + ], + "output-bps": [ + { + "data": "55422336" + } + ] + } + ], + "lag-adaptive-statistics": [ + { + "adaptive-adjusts": [ + { + "data": "0" + } + ], + "adaptive-scans": [ + { + "data": "0" + } + ], + "adaptive-updates": [ + { + "data": "0" + } + ] + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1588" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "1" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-sample-input": [ + { + "data": [ + null + ] + } + ], + "ifff-sendbcast-pkt-to-re": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "13.65.231.118/31" + } + ], + "ifa-local": [ + { + "data": "13.65.231.118" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ], + "mtu": [ + { + "data": "1585" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "mpls" + } + ], + "mtu": [ + { + "data": "1576" + } + ], + "maximum-labels": [ + { + "data": "3" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "multiservice" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "cbp0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "134" + } + ], + "snmp-index": [ + { + "data": "502" + } + ], + "if-type": [ + { + "data": "Ethernet" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "9192" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "current-physical-address": [ + { + "data": "2a:8a:1c:56:72:11", + "attributes": { + "junos:format": "MAC 2a:8a:1c:56:72:11" + } + } + ], + "hardware-physical-address": [ + { + "data": "2a:8a:1c:56:72:11", + "attributes": { + "junos:format": "MAC 2a:8a:1c:56:72:11" + } + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "demux0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "133" + } + ], + "snmp-index": [ + { + "data": "501" + } + ], + "if-type": [ + { + "data": "Software-Pseudo" + } + ], + "mtu": [ + { + "data": "9192" + } + ], + "clocking": [ + { + "data": "1" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-point-to-point": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "dsc" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "5" + } + ], + "snmp-index": [ + { + "data": "5" + } + ], + "if-type": [ + { + "data": "Software-Pseudo" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-point-to-point": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "em0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "2" + } + ], + "snmp-index": [ + { + "data": "17" + } + ], + "if-type": [ + { + "data": "Ethernet" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "current-physical-address": [ + { + "data": "02:00:00:00:00:04", + "attributes": { + "junos:format": "MAC 02:00:00:00:00:04" + } + } + ], + "hardware-physical-address": [ + { + "data": "02:00:00:00:00:04", + "attributes": { + "junos:format": "MAC 02:00:00:00:00:04" + } + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:26:58 UTC (74w6d 03:23 ago)", + "attributes": { + "junos:seconds": "45285788" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "1990791873" + } + ], + "output-packets": [ + { + "data": "2011337448" + } + ] + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "em0.0" + } + ], + "local-index": [ + { + "data": "3" + } + ], + "snmp-index": [ + { + "data": "18" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "1990791873" + } + ], + "output-packets": [ + { + "data": "2011337448" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1500" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "1" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "10/8" + } + ], + "ifa-local": [ + { + "data": "10.0.0.4" + } + ], + "ifa-broadcast": [ + { + "data": "10.255.255.255" + } + ] + }, + { + "ifa-flags": [ + { + "ifaf-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-kernel": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "128/2" + } + ], + "ifa-local": [ + { + "data": "133.4.74.1" + } + ], + "ifa-broadcast": [ + { + "data": "186.53.226.255" + } + ] + }, + { + "ifa-flags": [ + { + "ifaf-primary": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-default": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "128/2" + } + ], + "ifa-local": [ + { + "data": "133.4.74.4" + } + ], + "ifa-broadcast": [ + { + "data": "186.53.226.255" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ], + "mtu": [ + { + "data": "1500" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "1" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "ifa-destination": [ + { + "data": "af06:e3b6:61bb:2fc8:9927:61f9:4308:8300/64" + } + ], + "ifa-local": [ + { + "data": "af06:e3b6:61bb:2fc8:9b44:3a70:4d3a:8304" + } + ], + "interface-address": [ + { + "in6-addr-flags": [ + { + "ifaf-none": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + }, + { + "ifa-flags": [ + { + "ifaf-current-default": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "af47:43cc:8ad3:722:24f5:96f1:497f:5400/64" + } + ], + "ifa-local": [ + { + "data": "af47:43cc:8ad3:722:24ff:168e:79be:a504" + } + ], + "interface-address": [ + { + "in6-addr-flags": [ + { + "ifaf-none": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "tnp" + } + ], + "mtu": [ + { + "data": "1500" + } + ], + "address-family-flags": [ + { + "ifff-primary": [ + { + "data": [ + null + ] + } + ], + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-address": [ + { + "attributes": { + "heading": "Addresses" + }, + "ifa-local": [ + { + "data": "0x4" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "em1" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "down" + } + ], + "local-index": [ + { + "data": "65" + } + ], + "snmp-index": [ + { + "data": "23" + } + ], + "description": [ + { + "data": "UMI" + } + ], + "if-type": [ + { + "data": "Ethernet" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-no-carrier": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-hardware-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "current-physical-address": [ + { + "data": "02:00:02:00:00:04", + "attributes": { + "junos:format": "MAC 02:00:02:00:00:04" + } + } + ], + "hardware-physical-address": [ + { + "data": "02:00:02:00:00:04", + "attributes": { + "junos:format": "MAC 02:00:02:00:00:04" + } + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:26:12 UTC (74w6d 03:23 ago)", + "attributes": { + "junos:seconds": "45285834" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "em1.0" + } + ], + "local-index": [ + { + "data": "4" + } + ], + "snmp-index": [ + { + "data": "24" + } + ], + "if-config-flags": [ + { + "iff-device-down": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1500" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-down": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "10/8" + } + ], + "ifa-local": [ + { + "data": "10.0.0.1" + } + ], + "ifa-broadcast": [ + { + "data": "10.255.255.255" + } + ] + }, + { + "ifa-flags": [ + { + "ifaf-primary": [ + { + "data": [ + null + ] + } + ], + "ifaf-down": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "128/2" + } + ], + "ifa-local": [ + { + "data": "133.4.74.1" + } + ], + "ifa-broadcast": [ + { + "data": "186.53.226.255" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "tnp" + } + ], + "mtu": [ + { + "data": "1500" + } + ], + "address-family-flags": [ + { + "ifff-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-address": [ + { + "attributes": { + "heading": "Addresses" + }, + "ifa-local": [ + { + "data": "0x4" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "esi" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "139" + } + ], + "snmp-index": [ + { + "data": "580" + } + ], + "if-type": [ + { + "data": "Software-Pseudo" + } + ], + "link-level-type": [ + { + "data": "VxLAN-Tunnel-Endpoint" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "fti0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "141" + } + ], + "snmp-index": [ + { + "data": "556" + } + ], + "if-type": [ + { + "data": "FTI" + } + ], + "link-level-type": [ + { + "data": "Flexible-tunnel-Interface" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "fti1" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "142" + } + ], + "snmp-index": [ + { + "data": "557" + } + ], + "if-type": [ + { + "data": "FTI" + } + ], + "link-level-type": [ + { + "data": "Flexible-tunnel-Interface" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "fti2" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "143" + } + ], + "snmp-index": [ + { + "data": "561" + } + ], + "if-type": [ + { + "data": "FTI" + } + ], + "link-level-type": [ + { + "data": "Flexible-tunnel-Interface" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "fti3" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "144" + } + ], + "snmp-index": [ + { + "data": "562" + } + ], + "if-type": [ + { + "data": "FTI" + } + ], + "link-level-type": [ + { + "data": "Flexible-tunnel-Interface" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "fti4" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "145" + } + ], + "snmp-index": [ + { + "data": "574" + } + ], + "if-type": [ + { + "data": "FTI" + } + ], + "link-level-type": [ + { + "data": "Flexible-tunnel-Interface" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "fti5" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "146" + } + ], + "snmp-index": [ + { + "data": "584" + } + ], + "if-type": [ + { + "data": "FTI" + } + ], + "link-level-type": [ + { + "data": "Flexible-tunnel-Interface" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "fti6" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "147" + } + ], + "snmp-index": [ + { + "data": "585" + } + ], + "if-type": [ + { + "data": "FTI" + } + ], + "link-level-type": [ + { + "data": "Flexible-tunnel-Interface" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "fti7" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "148" + } + ], + "snmp-index": [ + { + "data": "586" + } + ], + "if-type": [ + { + "data": "FTI" + } + ], + "link-level-type": [ + { + "data": "Flexible-tunnel-Interface" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "fxp0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "64" + } + ], + "snmp-index": [ + { + "data": "1" + } + ], + "if-type": [ + { + "data": "Ethernet" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:ff", + "attributes": { + "junos:format": "MAC 28:8a:1c:56:72:ff" + } + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:ff", + "attributes": { + "junos:format": "MAC 28:8a:1c:56:72:ff" + } + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:26:12 UTC (74w6d 03:23 ago)", + "attributes": { + "junos:seconds": "45285834" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "23683758" + } + ], + "output-packets": [ + { + "data": "1631858" + } + ] + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "fxp0.0" + } + ], + "local-index": [ + { + "data": "5" + } + ], + "snmp-index": [ + { + "data": "13" + } + ], + "description": [ + { + "data": "MGMT : OOB : ACME9525-MS1 Gig 0/4" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "23683758" + } + ], + "output-packets": [ + { + "data": "1631858" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1500" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ], + "ifff-sendbcast-pkt-to-re": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "gre" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "10" + } + ], + "snmp-index": [ + { + "data": "8" + } + ], + "if-type": [ + { + "data": "GRE" + } + ], + "link-level-type": [ + { + "data": "GRE" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-point-to-point": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "ipip" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "11" + } + ], + "snmp-index": [ + { + "data": "9" + } + ], + "if-type": [ + { + "data": "IPIP" + } + ], + "link-level-type": [ + { + "data": "IP-over-IP" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "irb" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "137" + } + ], + "snmp-index": [ + { + "data": "505" + } + ], + "if-type": [ + { + "data": "Ethernet" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:f0", + "attributes": { + "junos:format": "MAC 28:8a:1c:56:72:f0" + } + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:f0", + "attributes": { + "junos:format": "MAC 28:8a:1c:56:72:f0" + } + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "jsrv" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "128" + } + ], + "snmp-index": [ + { + "data": "560" + } + ], + "if-type": [ + { + "data": "Ethernet" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + {} + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:c0", + "attributes": { + "junos:format": "MAC 28:8a:1c:56:72:c0" + } + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:c0", + "attributes": { + "junos:format": "MAC 28:8a:1c:56:72:c0" + } + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "jsrv.1" + } + ], + "local-index": [ + { + "data": "324" + } + ], + "snmp-index": [ + { + "data": "563" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "unknown" + } + ], + "policer-overhead": [ + {} + ], + "logical-interface-bandwidth": [ + { + "data": "1Gbps" + } + ], + "irb-domain": [ + { + "irb-routing-instance": [ + { + "data": "None" + } + ], + "irb-bridge": [ + { + "data": "None" + } + ] + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "max-local-cache": [ + { + "data": "75000" + } + ], + "new-hold-limit": [ + { + "data": "75000" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-primary": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-default": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-preferred": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-destination": [ + { + "data": "128/2" + } + ], + "ifa-local": [ + { + "data": "133.4.74.127" + } + ], + "ifa-broadcast": [ + { + "data": "186.53.226.255" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lo0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "6" + } + ], + "snmp-index": [ + { + "data": "6" + } + ], + "if-type": [ + { + "data": "Loopback" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ], + "ifdf-loopback": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "32089668" + } + ], + "output-packets": [ + { + "data": "32089668" + } + ] + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "lo0.0" + } + ], + "local-index": [ + { + "data": "322" + } + ], + "snmp-index": [ + { + "data": "16" + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "Unspecified" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "848" + } + ], + "output-packets": [ + { + "data": "848" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-sendbcast-pkt-to-re": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-current-default": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-local": [ + { + "data": "198.51.100.1" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "ifaf-current-default": [ + { + "data": [ + null + ] + } + ], + "ifaf-current-primary": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifa-local": [ + { + "data": "49.013.0065.0224.0113" + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "ifa-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "ifa-local": [ + { + "data": "af06:e3b6:61bb:2fc8:ad6c:c0a1:8292:d9ff" + } + ], + "interface-address": [ + { + "in6-addr-flags": [ + { + "ifaf-none": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lo0.16384" + } + ], + "local-index": [ + { + "data": "321" + } + ], + "snmp-index": [ + { + "data": "21" + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "Unspecified" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ], + "interface-address": [ + { + "attributes": { + "heading": "Addresses" + }, + "ifa-local": [ + { + "data": "66.33.236.1" + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lo0.16385" + } + ], + "local-index": [ + { + "data": "320" + } + ], + "snmp-index": [ + { + "data": "22" + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "Unspecified" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "32088820" + } + ], + "output-packets": [ + { + "data": "32088820" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "internal-flags": [ + { + "data": "0x2" + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "4" + } + ], + "snmp-index": [ + { + "data": "4" + } + ], + "if-type": [ + { + "data": "Software-Pseudo" + } + ], + "link-level-type": [ + { + "data": "LSI" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + {} + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "324364" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "lsi.0" + } + ], + "local-index": [ + { + "data": "337" + } + ], + "snmp-index": [ + { + "data": "512" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-point-to-point": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "LSI-NULL" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.1" + } + ], + "local-index": [ + { + "data": "338" + } + ], + "snmp-index": [ + { + "data": "566" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-point-to-point": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "LSI-NULL" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "649098" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-none": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.2" + } + ], + "local-index": [ + { + "data": "339" + } + ], + "snmp-index": [ + { + "data": "569" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-point-to-point": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "LSI-NULL" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-none": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.3" + } + ], + "local-index": [ + { + "data": "340" + } + ], + "snmp-index": [ + { + "data": "540" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-point-to-point": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "LSI-NULL" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "230" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-none": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.4" + } + ], + "local-index": [ + { + "data": "341" + } + ], + "snmp-index": [ + { + "data": "542" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-point-to-point": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "LSI-NULL" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-none": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.5" + } + ], + "local-index": [ + { + "data": "342" + } + ], + "snmp-index": [ + { + "data": "543" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-point-to-point": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "LSI-NULL" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "235" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-none": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.6" + } + ], + "local-index": [ + { + "data": "343" + } + ], + "snmp-index": [ + { + "data": "544" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-point-to-point": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "LSI-NULL" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "lsi.7" + } + ], + "local-index": [ + { + "data": "344" + } + ], + "snmp-index": [ + { + "data": "545" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-point-to-point": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "encapsulation": [ + { + "data": "LSI-NULL" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "714" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ], + "filter-information": [ + {} + ], + "address-family": [ + { + "address-family-name": [ + { + "data": "inet" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-none": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "iso" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "address-family-name": [ + { + "data": "inet6" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "max-local-cache": [ + { + "data": "0" + } + ], + "new-hold-limit": [ + { + "data": "0" + } + ], + "intf-curr-cnt": [ + { + "data": "0" + } + ], + "intf-unresolved-cnt": [ + { + "data": "0" + } + ], + "intf-dropcnt": [ + { + "data": "0" + } + ], + "address-family-flags": [ + { + "ifff-is-primary": [ + { + "data": [ + null + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "me0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "1" + } + ], + "snmp-index": [ + { + "data": "33" + } + ], + "if-type": [ + { + "data": "Ethernet" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "1514" + } + ], + "speed": [ + { + "data": "1000mbps" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "current-physical-address": [ + { + "data": "02:00:00:00:00:0b", + "attributes": { + "junos:format": "MAC 02:00:00:00:00:0b" + } + } + ], + "hardware-physical-address": [ + { + "data": "02:00:00:00:00:0b", + "attributes": { + "junos:format": "MAC 02:00:00:00:00:0b" + } + } + ], + "interface-flapped": [ + { + "data": "2022-12-23 14:26:12 UTC (74w6d 03:23 ago)", + "attributes": { + "junos:seconds": "45285834" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "1631918" + } + ] + } + ], + "logical-interface": [ + { + "name": [ + { + "data": "me0.0" + } + ], + "local-index": [ + { + "data": "6" + } + ], + "snmp-index": [ + { + "data": "34" + } + ], + "if-config-flags": [ + { + "iff-up": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ], + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "encapsulation": [ + { + "data": "ENET2" + } + ], + "policer-overhead": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "1631918" + } + ] + } + ], + "filter-information": [ + {} + ] + } + ] + }, + { + "name": [ + { + "data": "mtun" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "66" + } + ], + "snmp-index": [ + { + "data": "12" + } + ], + "if-type": [ + { + "data": "Multicast-GRE" + } + ], + "link-level-type": [ + { + "data": "GRE" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "pimd" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "26" + } + ], + "snmp-index": [ + { + "data": "11" + } + ], + "if-type": [ + { + "data": "PIMD" + } + ], + "link-level-type": [ + { + "data": "PIM-Decapsulator" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "pime" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "25" + } + ], + "snmp-index": [ + { + "data": "10" + } + ], + "if-type": [ + { + "data": "PIME" + } + ], + "link-level-type": [ + { + "data": "PIM-Encapsulator" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + {} + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "pip0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "135" + } + ], + "snmp-index": [ + { + "data": "503" + } + ], + "if-type": [ + { + "data": "Ethernet" + } + ], + "link-level-type": [ + { + "data": "Ethernet" + } + ], + "mtu": [ + { + "data": "9192" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "current-physical-address": [ + { + "data": "28:8a:1c:56:72:b0", + "attributes": { + "junos:format": "MAC 28:8a:1c:56:72:b0" + } + } + ], + "hardware-physical-address": [ + { + "data": "28:8a:1c:56:72:b0", + "attributes": { + "junos:format": "MAC 28:8a:1c:56:72:b0" + } + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "pp0" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "136" + } + ], + "snmp-index": [ + { + "data": "504" + } + ], + "if-type": [ + { + "data": "PPPoE" + } + ], + "link-level-type": [ + { + "data": "PPPoE" + } + ], + "mtu": [ + { + "data": "1532" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-point-to-point": [ + { + "data": [ + null + ] + } + ], + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ] + }, + { + "name": [ + { + "data": "rbeb" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "140" + } + ], + "snmp-index": [ + { + "data": "555" + } + ], + "if-type": [ + { + "data": "Software-Pseudo" + } + ], + "link-level-type": [ + { + "data": "Remote-BEB" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "tap" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "12" + } + ], + "snmp-index": [ + { + "data": "7" + } + ], + "if-type": [ + { + "data": "Software-Pseudo" + } + ], + "link-level-type": [ + { + "data": "Interface-Specific" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + }, + { + "name": [ + { + "data": "vtep" + } + ], + "admin-status": [ + { + "data": "up", + "attributes": { + "junos:format": "Enabled" + } + } + ], + "oper-status": [ + { + "data": "up" + } + ], + "local-index": [ + { + "data": "138" + } + ], + "snmp-index": [ + { + "data": "577" + } + ], + "if-type": [ + { + "data": "Software-Pseudo" + } + ], + "link-level-type": [ + { + "data": "VxLAN-Tunnel-Endpoint" + } + ], + "mtu": [ + { + "data": "Unlimited" + } + ], + "speed": [ + { + "data": "Unlimited" + } + ], + "if-device-flags": [ + { + "ifdf-present": [ + { + "data": [ + null + ] + } + ], + "ifdf-running": [ + { + "data": [ + null + ] + } + ] + } + ], + "ifd-specific-config-flags": [ + { + "internal-flags": [ + { + "data": "0x0" + } + ] + } + ], + "if-config-flags": [ + { + "iff-snmp-traps": [ + { + "data": [ + null + ] + } + ] + } + ], + "link-type": [ + { + "data": "Full-Duplex" + } + ], + "if-media-flags": [ + { + "ifmf-none": [ + { + "data": [ + null + ] + } + ] + } + ], + "interface-flapped": [ + { + "data": "Never", + "attributes": { + "junos:seconds": "0" + } + } + ], + "traffic-statistics": [ + { + "attributes": { + "junos:style": "brief" + }, + "input-packets": [ + { + "data": "0" + } + ], + "output-packets": [ + { + "data": "0" + } + ] + } + ] + } + ] + } + ] + }, + "show vlans | display json": [] +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/juniper_junos/sync_devices/expected_result_1.json b/nautobot_device_onboarding/tests/mock/juniper_junos/sync_devices/expected_result_1.json new file mode 100755 index 00000000..ba9facb3 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/juniper_junos/sync_devices/expected_result_1.json @@ -0,0 +1,7 @@ +{ + "device_type": "MX10-T", + "hostname": "JUNOS-PE1", + "mask_length": 32, + "mgmt_interface": "lo0.0", + "serial": "T9958" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/juniper_junos/sync_network_data_all/expected_result_1.json b/nautobot_device_onboarding/tests/mock/juniper_junos/sync_network_data_all/expected_result_1.json new file mode 100755 index 00000000..9e26dfee --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/juniper_junos/sync_network_data_all/expected_result_1.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/juniper_junos/sync_network_data_no_options/expected_result_1.json b/nautobot_device_onboarding/tests/mock/juniper_junos/sync_network_data_no_options/expected_result_1.json new file mode 100755 index 00000000..571cb30c --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/juniper_junos/sync_network_data_no_options/expected_result_1.json @@ -0,0 +1,1120 @@ +{ + "interfaces": { + "ae0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c0", + "mtu": "1602", + "type": "lag" + }, + "ae0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.230.30", + "prefix_length": "31" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "type": "lag" + }, + "ae11": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c2", + "mtu": "1602", + "type": "lag" + }, + "ae11.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.231.109", + "prefix_length": "31" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "type": "lag" + }, + "ae14": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c3", + "mtu": "1602", + "type": "lag" + }, + "ae14.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.231.118", + "prefix_length": "31" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "type": "lag" + }, + "ae3": { + "802.1Q_mode": "", + "description": "UMI", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c1", + "mtu": "1514", + "type": "lag" + }, + "cbp0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "2a:8a:1c:56:72:11", + "mtu": "9192", + "type": "other" + }, + "demux0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "dsc": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "em0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "02:00:00:00:00:04", + "mtu": "1514", + "type": "other" + }, + "em0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "10.0.0.4", + "prefix_length": "8" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other" + }, + "em1": { + "802.1Q_mode": "", + "description": "UMI", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "02:00:02:00:00:04", + "mtu": "1514", + "type": "other" + }, + "em1.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "10.0.0.1", + "prefix_length": "8" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other" + }, + "esi": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "fti0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "fti1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "fti2": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "fti3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "fti4": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "fti5": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "fti6": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "fti7": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "fxp0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:ff", + "mtu": "1514", + "type": "other" + }, + "fxp0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other" + }, + "ge-1/0/0": { + "802.1Q_mode": "", + "description": "UNI : : ACME9525-MS1 : Gi0/2", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:60", + "mtu": "1522", + "type": "other" + }, + "ge-1/0/0.2950": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.209.193", + "prefix_length": "28" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other" + }, + "ge-1/0/0.2953": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.145.73", + "prefix_length": "29" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other" + }, + "ge-1/0/0.32767": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other" + }, + "ge-1/0/1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:61", + "mtu": "1514", + "type": "other" + }, + "ge-1/0/2": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:62", + "mtu": "1514", + "type": "other" + }, + "ge-1/0/3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:63", + "mtu": "1514", + "type": "other" + }, + "ge-1/0/4": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:64", + "mtu": "1514", + "type": "other" + }, + "ge-1/0/5": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:65", + "mtu": "1514", + "type": "other" + }, + "ge-1/0/6": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:66", + "mtu": "1514", + "type": "other" + }, + "ge-1/0/7": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:67", + "mtu": "1514", + "type": "other" + }, + "ge-1/0/8": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:68", + "mtu": "1514", + "type": "other" + }, + "ge-1/0/9": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:69", + "mtu": "1514", + "type": "other" + }, + "ge-1/1/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:6c", + "mtu": "1514", + "type": "other" + }, + "ge-1/1/1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:6d", + "mtu": "1514", + "type": "other" + }, + "ge-1/1/2": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:6e", + "mtu": "1514", + "type": "other" + }, + "ge-1/1/3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:6f", + "mtu": "1514", + "type": "other" + }, + "ge-1/1/4": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:70", + "mtu": "1514", + "type": "other" + }, + "ge-1/1/5": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:71", + "mtu": "1514", + "type": "other" + }, + "ge-1/1/6": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:72", + "mtu": "1514", + "type": "other" + }, + "ge-1/1/6.16386": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other" + }, + "ge-1/1/7": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:73", + "mtu": "1514", + "type": "other" + }, + "ge-1/1/7.16386": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other" + }, + "ge-1/1/8": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:74", + "mtu": "1514", + "type": "other" + }, + "ge-1/1/8.16386": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other" + }, + "ge-1/1/9": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:75", + "mtu": "1514", + "type": "other" + }, + "ge-1/1/9.16386": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other" + }, + "gre": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "ipip": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "irb": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:f0", + "mtu": "1514", + "type": "other" + }, + "jsrv": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c0", + "mtu": "1514", + "type": "other" + }, + "jsrv.1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "133.4.74.127", + "prefix_length": "2" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other" + }, + "lc-0/0/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other" + }, + "lc-0/0/0.32769": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other" + }, + "lo0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "lo0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": 32 + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "lo0.16384": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "66.33.236.1", + "prefix_length": 32 + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "lo0.16385": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "lsi": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "lsi.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "lsi.1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "lsi.2": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "lsi.3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "lsi.4": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "lsi.5": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "lsi.6": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "lsi.7": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "me0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "02:00:00:00:00:0b", + "mtu": "1514", + "type": "other" + }, + "me0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other" + }, + "mtun": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "pfe-0/0/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other" + }, + "pfe-0/0/0.16383": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other" + }, + "pfh-0/0/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other" + }, + "pfh-0/0/0.16383": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other" + }, + "pfh-0/0/0.16384": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other" + }, + "pimd": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "pime": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "pip0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:b0", + "mtu": "9192", + "type": "other" + }, + "pp0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1532", + "type": "other" + }, + "rbeb": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "tap": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "vtep": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other" + }, + "xe-0/0/0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "ae0", + "link_status": "True", + "mac_address": "28:8a:1c:56:72:00", + "mtu": "1602", + "type": "other" + }, + "xe-0/0/0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "type": "other" + }, + "xe-0/0/1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "ae14", + "link_status": "True", + "mac_address": "28:8a:1c:56:72:01", + "mtu": "1602", + "type": "other" + }, + "xe-0/0/1.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "type": "other" + }, + "xe-0/0/2": { + "802.1Q_mode": "", + "description": "UNI : : ACME9525RL1- : Te1/2/8", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:02", + "mtu": "1522", + "type": "other" + }, + "xe-0/0/2.3100": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.98.49", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other" + }, + "xe-0/0/2.3101": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.106.245", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other" + }, + "xe-0/0/2.3102": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.104.1", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other" + }, + "xe-0/0/2.3103": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.106.241", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other" + }, + "xe-0/0/2.3104": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.106.249", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other" + }, + "xe-0/0/2.32767": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other" + }, + "xe-0/0/3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:03", + "mtu": "1522", + "type": "other" + }, + "xe-0/0/3.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other" + }, + "xe-1/2/0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "ae11", + "link_status": "True", + "mac_address": "28:8a:1c:56:72:78", + "mtu": "1602", + "type": "other" + }, + "xe-1/2/0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "type": "other" + }, + "xe-1/3/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:84", + "mtu": "1522", + "type": "other" + }, + "xe-1/3/0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other" + } + }, + "serial": "T9958" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/juniper_junos/sync_network_data_with_vlans/expected_result_1.json b/nautobot_device_onboarding/tests/mock/juniper_junos/sync_network_data_with_vlans/expected_result_1.json new file mode 100755 index 00000000..ad6e8261 --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/juniper_junos/sync_network_data_with_vlans/expected_result_1.json @@ -0,0 +1,1328 @@ +{ + "interfaces": { + "ae0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c0", + "mtu": "1602", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": [] + }, + "ae0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.230.30", + "prefix_length": "31" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": [] + }, + "ae11": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c2", + "mtu": "1602", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": [] + }, + "ae11.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.231.109", + "prefix_length": "31" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": [] + }, + "ae14": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c3", + "mtu": "1602", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": [] + }, + "ae14.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.231.118", + "prefix_length": "31" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": [] + }, + "ae3": { + "802.1Q_mode": "", + "description": "UMI", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c1", + "mtu": "1514", + "tagged_vlans": [], + "type": "lag", + "untagged_vlan": [] + }, + "cbp0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "2a:8a:1c:56:72:11", + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "demux0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "dsc": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "em0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "02:00:00:00:00:04", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "em0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "10.0.0.4", + "prefix_length": "8" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "em1": { + "802.1Q_mode": "", + "description": "UMI", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "02:00:02:00:00:04", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "em1.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "10.0.0.1", + "prefix_length": "8" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "esi": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "fti0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "fti1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "fti2": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "fti3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "fti4": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "fti5": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "fti6": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "fti7": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "fxp0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:ff", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "fxp0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/0/0": { + "802.1Q_mode": "", + "description": "UNI : : ACME9525-MS1 : Gi0/2", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:60", + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/0/0.2950": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.209.193", + "prefix_length": "28" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/0/0.2953": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.145.73", + "prefix_length": "29" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/0/0.32767": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/0/1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:61", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/0/2": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:62", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/0/3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:63", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/0/4": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:64", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/0/5": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:65", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/0/6": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:66", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/0/7": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:67", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/0/8": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:68", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/0/9": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:69", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:6c", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:6d", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/2": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:6e", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:6f", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/4": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:70", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/5": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:71", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/6": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:72", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/6.16386": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/7": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:73", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/7.16386": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/8": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:74", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/8.16386": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/9": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:75", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ge-1/1/9.16386": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "gre": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "ipip": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "irb": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:f0", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "jsrv": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c0", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "jsrv.1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "133.4.74.127", + "prefix_length": "2" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lc-0/0/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lc-0/0/0.32769": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lo0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lo0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": 32 + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lo0.16384": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "66.33.236.1", + "prefix_length": 32 + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lo0.16385": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lsi": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lsi.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lsi.1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lsi.2": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lsi.3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lsi.4": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lsi.5": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lsi.6": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "lsi.7": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "me0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "02:00:00:00:00:0b", + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "me0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "mtun": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "pfe-0/0/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "pfe-0/0/0.16383": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "pfh-0/0/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "pfh-0/0/0.16383": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "pfh-0/0/0.16384": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "pimd": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "pime": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "pip0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:b0", + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "pp0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1532", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "rbeb": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "tap": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "vtep": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-0/0/0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "ae0", + "link_status": "True", + "mac_address": "28:8a:1c:56:72:00", + "mtu": "1602", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-0/0/0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-0/0/1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "ae14", + "link_status": "True", + "mac_address": "28:8a:1c:56:72:01", + "mtu": "1602", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-0/0/1.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-0/0/2": { + "802.1Q_mode": "", + "description": "UNI : : ACME9525RL1- : Te1/2/8", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:02", + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-0/0/2.3100": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.98.49", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-0/0/2.3101": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.106.245", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-0/0/2.3102": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.104.1", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-0/0/2.3103": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.106.241", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-0/0/2.3104": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.106.249", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-0/0/2.32767": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-0/0/3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:03", + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-0/0/3.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-1/2/0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "ae11", + "link_status": "True", + "mac_address": "28:8a:1c:56:72:78", + "mtu": "1602", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-1/2/0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-1/3/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:84", + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + }, + "xe-1/3/0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "tagged_vlans": [], + "type": "other", + "untagged_vlan": [] + } + }, + "serial": "T9958" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/mock/juniper_junos/sync_network_data_with_vrfs/expected_result_1.json b/nautobot_device_onboarding/tests/mock/juniper_junos/sync_network_data_with_vrfs/expected_result_1.json new file mode 100755 index 00000000..4560593a --- /dev/null +++ b/nautobot_device_onboarding/tests/mock/juniper_junos/sync_network_data_with_vrfs/expected_result_1.json @@ -0,0 +1,1224 @@ +{ + "interfaces": { + "ae0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c0", + "mtu": "1602", + "type": "lag", + "vrf": {} + }, + "ae0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.230.30", + "prefix_length": "31" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "type": "lag", + "vrf": {} + }, + "ae11": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c2", + "mtu": "1602", + "type": "lag", + "vrf": {} + }, + "ae11.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.231.109", + "prefix_length": "31" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "type": "lag", + "vrf": {} + }, + "ae14": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c3", + "mtu": "1602", + "type": "lag", + "vrf": {} + }, + "ae14.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.231.118", + "prefix_length": "31" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "type": "lag", + "vrf": {} + }, + "ae3": { + "802.1Q_mode": "", + "description": "UMI", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c1", + "mtu": "1514", + "type": "lag", + "vrf": {} + }, + "cbp0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "2a:8a:1c:56:72:11", + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "demux0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "dsc": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "em0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "02:00:00:00:00:04", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "em0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "10.0.0.4", + "prefix_length": "8" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "em1": { + "802.1Q_mode": "", + "description": "UMI", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "02:00:02:00:00:04", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "em1.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "10.0.0.1", + "prefix_length": "8" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "esi": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "fti0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "fti1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "fti2": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "fti3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "fti4": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "fti5": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "fti6": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "fti7": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "fxp0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:ff", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "fxp0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/0/0": { + "802.1Q_mode": "", + "description": "UNI : : ACME9525-MS1 : Gi0/2", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:60", + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "ge-1/0/0.2950": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.209.193", + "prefix_length": "28" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "ge-1/0/0.2953": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.145.73", + "prefix_length": "29" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "ge-1/0/0.32767": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "ge-1/0/1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:61", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/0/2": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:62", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/0/3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:63", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/0/4": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:64", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/0/5": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:65", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/0/6": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:66", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/0/7": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:67", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/0/8": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:68", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/0/9": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:69", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:6c", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:6d", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/2": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:6e", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:6f", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/4": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:70", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/5": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "False", + "mac_address": "28:8a:1c:56:72:71", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/6": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:72", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/6.16386": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/7": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:73", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/7.16386": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/8": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:74", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/8.16386": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/9": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:75", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "ge-1/1/9.16386": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "gre": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "ipip": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "irb": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:f0", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "jsrv": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:c0", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "jsrv.1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "133.4.74.127", + "prefix_length": "2" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "lc-0/0/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other", + "vrf": {} + }, + "lc-0/0/0.32769": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other", + "vrf": {} + }, + "lo0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "lo0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "198.51.100.1", + "prefix_length": 32 + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "lo0.16384": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "66.33.236.1", + "prefix_length": 32 + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "lo0.16385": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "lsi": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "lsi.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "lsi.1": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "lsi.2": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "lsi.3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "lsi.4": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "lsi.5": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "lsi.6": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "lsi.7": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "me0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "02:00:00:00:00:0b", + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "me0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1514", + "type": "other", + "vrf": {} + }, + "mtun": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "pfe-0/0/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other", + "vrf": {} + }, + "pfe-0/0/0.16383": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other", + "vrf": {} + }, + "pfh-0/0/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other", + "vrf": {} + }, + "pfh-0/0/0.16383": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other", + "vrf": {} + }, + "pfh-0/0/0.16384": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "", + "type": "other", + "vrf": {} + }, + "pimd": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "pime": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "pip0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:b0", + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "pp0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1532", + "type": "other", + "vrf": {} + }, + "rbeb": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "tap": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "vtep": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "9192", + "type": "other", + "vrf": {} + }, + "xe-0/0/0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "ae0", + "link_status": "True", + "mac_address": "28:8a:1c:56:72:00", + "mtu": "1602", + "type": "other", + "vrf": {} + }, + "xe-0/0/0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "type": "other", + "vrf": {} + }, + "xe-0/0/1": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "ae14", + "link_status": "True", + "mac_address": "28:8a:1c:56:72:01", + "mtu": "1602", + "type": "other", + "vrf": {} + }, + "xe-0/0/1.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "type": "other", + "vrf": {} + }, + "xe-0/0/2": { + "802.1Q_mode": "", + "description": "UNI : : ACME9525RL1- : Te1/2/8", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:02", + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "xe-0/0/2.3100": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.98.49", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "xe-0/0/2.3101": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.106.245", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "xe-0/0/2.3102": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.104.1", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "xe-0/0/2.3103": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.106.241", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "xe-0/0/2.3104": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [ + { + "ip_address": "13.65.106.249", + "prefix_length": "30" + } + ], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "xe-0/0/2.32767": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "xe-0/0/3": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:03", + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "xe-0/0/3.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "xe-1/2/0": { + "802.1Q_mode": "", + "description": "a description", + "ip_addresses": [], + "lag": "ae11", + "link_status": "True", + "mac_address": "28:8a:1c:56:72:78", + "mtu": "1602", + "type": "other", + "vrf": {} + }, + "xe-1/2/0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1602", + "type": "other", + "vrf": {} + }, + "xe-1/3/0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": "28:8a:1c:56:72:84", + "mtu": "1522", + "type": "other", + "vrf": {} + }, + "xe-1/3/0.0": { + "802.1Q_mode": "", + "description": "", + "ip_addresses": [], + "lag": [], + "link_status": "True", + "mac_address": [], + "mtu": "1522", + "type": "other", + "vrf": {} + } + }, + "serial": "T9958" +} \ No newline at end of file diff --git a/nautobot_device_onboarding/tests/test_basic.py b/nautobot_device_onboarding/tests/test_basic.py index e0fd647d..2e5df1de 100644 --- a/nautobot_device_onboarding/tests/test_basic.py +++ b/nautobot_device_onboarding/tests/test_basic.py @@ -1,19 +1,9 @@ """Basic tests that do not require Django.""" -import unittest -import os -import toml - -from nautobot_device_onboarding import __version__ as project_version - -class TestVersion(unittest.TestCase): - """Test Version is the same.""" +import os +import unittest - def test_version(self): - """Verify that pyproject.toml version is same as version specified in the package.""" - parent_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) - poetry_version = toml.load(os.path.join(parent_path, "pyproject.toml"))["tool"]["poetry"]["version"] - self.assertEqual(project_version, poetry_version) +import toml class TestDocsPackaging(unittest.TestCase): diff --git a/nautobot_device_onboarding/tests/test_command_getter.py b/nautobot_device_onboarding/tests/test_command_getter.py new file mode 100755 index 00000000..88f0f332 --- /dev/null +++ b/nautobot_device_onboarding/tests/test_command_getter.py @@ -0,0 +1,219 @@ +"""Test for nornir plays in command_getter.""" + +import os +import unittest + +import yaml + +from nautobot_device_onboarding.nornir_plays.command_getter import _get_commands_to_run + +MOCK_DIR = os.path.join("nautobot_device_onboarding", "tests", "mock") + + +class TestGetCommandsToRun(unittest.TestCase): + """Test the ability to get the proper commands to run.""" + + def setUp(self): + with open(f"{MOCK_DIR}/command_mappers/mock_cisco_ios.yml", "r", encoding="utf-8") as mock_file_data: + self.expected_data = yaml.safe_load(mock_file_data) + + def test_deduplicate_command_list_sync_devices(self): + """Test dedup on sync_devices ssot job.""" + get_commands_to_run = _get_commands_to_run( + self.expected_data["sync_devices"], + sync_vlans=False, + sync_vrfs=False, + sync_cables=False, + ) + expected_commands_to_run = [ + {"command": "show version", "jpath": "[*].hostname", "parser": "textfsm"}, + { + "command": "show interfaces", + "jpath": "[?ip_address=='{{ obj }}'].{name: interface, enabled: link_status}", + "parser": "textfsm", + "post_processor": "{{ (obj | selectattr('enabled', 'eq', 'up') | list | first ).name }}", + }, + ] + self.assertEqual(get_commands_to_run, expected_commands_to_run) + + def test_deduplicate_command_list_sync_data_no_vrfs_no_vlans(self): + """Test dedup on sync_network_data ssot job.""" + get_commands_to_run = _get_commands_to_run( + self.expected_data["sync_network_data"], + sync_vlans=False, + sync_vrfs=False, + sync_cables=False, + ) + expected_commands_to_run = [ + {"command": "show version", "parser": "textfsm", "jpath": "[*].serial[]"}, + { + "command": "show interfaces", + "parser": "textfsm", + "jpath": "[*].interface", + "post_processor": "{% set result={} %}{% for interface in obj %}{{ result.update({interface: {}}) or '' }}{% endfor %}{{ result | tojson }}", + }, + { + "command": "show interfaces switchport", + "parser": "textfsm", + "jpath": "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, trunking_vlans: trunking_vlans}", + "post_processor": "{{ obj | interface_mode_logic }}", + "iterable_type": "str", + }, + { + "command": "show etherchannel summary", + "parser": "textfsm", + "jpath": "[?contains(@.member_interface, `{{ current_key | abbreviated_interface_name }}`)].bundle_name", + "post_processor": "{% if obj | length > 0 %}{{ obj[0] | canonical_interface_name }}{% else %}{{ obj }}{% endif %}", + "iterable_type": "str", + }, + ] + self.assertEqual(get_commands_to_run, expected_commands_to_run) + + def test_deduplicate_command_list_sync_data_with_vrfs_no_vlans(self): + """Test dedup on sync_network_data ssot job.""" + get_commands_to_run = _get_commands_to_run( + self.expected_data["sync_network_data"], + sync_vlans=False, + sync_vrfs=True, + sync_cables=False, + ) + expected_commands_to_run = [ + {"command": "show version", "parser": "textfsm", "jpath": "[*].serial[]"}, + { + "command": "show interfaces", + "parser": "textfsm", + "jpath": "[*].interface", + "post_processor": "{% set result={} %}{% for interface in obj %}{{ result.update({interface: {}}) or '' }}{% endfor %}{{ result | tojson }}", + }, + { + "command": "show interfaces switchport", + "parser": "textfsm", + "jpath": "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, trunking_vlans: trunking_vlans}", + "post_processor": "{{ obj | interface_mode_logic }}", + "iterable_type": "str", + }, + { + "command": "show etherchannel summary", + "parser": "textfsm", + "jpath": "[?contains(@.member_interface, `{{ current_key | abbreviated_interface_name }}`)].bundle_name", + "post_processor": "{% if obj | length > 0 %}{{ obj[0] | canonical_interface_name }}{% else %}{{ obj }}{% endif %}", + "iterable_type": "str", + }, + { + "command": "show ip interface", + "parser": "textfsm", + "jpath": "[?interface=='{{ current_key }}'].{name:vrf}", + "post_processor": "{% if obj | length > 0 %}{{ obj[0] | key_exist_or_default('name') | tojson }}{% else %}{{ obj }}{% endif %}", + "iterable_type": "dict", + }, + ] + self.assertEqual(get_commands_to_run, expected_commands_to_run) + + def test_deduplicate_command_list_sync_data_no_vrfs_with_vlans(self): + """Test dedup on sync_network_data ssot job.""" + get_commands_to_run = _get_commands_to_run( + self.expected_data["sync_network_data"], + sync_vlans=True, + sync_vrfs=False, + sync_cables=False, + ) + expected_commands_to_run = [ + {"command": "show vlan", "parser": "textfsm", "jpath": "[*].{id: vlan_id, name: vlan_name}"}, + {"command": "show version", "parser": "textfsm", "jpath": "[*].serial[]"}, + { + "command": "show interfaces", + "parser": "textfsm", + "jpath": "[*].interface", + "post_processor": "{% set result={} %}{% for interface in obj %}{{ result.update({interface: {}}) or '' }}{% endfor %}{{ result | tojson }}", + }, + { + "command": "show interfaces switchport", + "parser": "textfsm", + "jpath": "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, trunking_vlans: trunking_vlans}", + "post_processor": "{{ obj | interface_mode_logic }}", + "iterable_type": "str", + }, + { + "command": "show etherchannel summary", + "parser": "textfsm", + "jpath": "[?contains(@.member_interface, `{{ current_key | abbreviated_interface_name }}`)].bundle_name", + "post_processor": "{% if obj | length > 0 %}{{ obj[0] | canonical_interface_name }}{% else %}{{ obj }}{% endif %}", + "iterable_type": "str", + }, + ] + self.assertEqual(get_commands_to_run, expected_commands_to_run) + + def test_deduplicate_command_list_sync_data_with_vrfs_and_vlans(self): + """Test dedup on sync_network_data ssot job.""" + get_commands_to_run = _get_commands_to_run( + self.expected_data["sync_network_data"], + sync_vlans=True, + sync_vrfs=True, + sync_cables=False, + ) + expected_commands_to_run = [ + {"command": "show vlan", "parser": "textfsm", "jpath": "[*].{id: vlan_id, name: vlan_name}"}, + {"command": "show version", "parser": "textfsm", "jpath": "[*].serial[]"}, + { + "command": "show interfaces", + "parser": "textfsm", + "jpath": "[*].interface", + "post_processor": "{% set result={} %}{% for interface in obj %}{{ result.update({interface: {}}) or '' }}{% endfor %}{{ result | tojson }}", + }, + { + "command": "show interfaces switchport", + "parser": "textfsm", + "jpath": "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, trunking_vlans: trunking_vlans}", + "post_processor": "{{ obj | interface_mode_logic }}", + "iterable_type": "str", + }, + { + "command": "show etherchannel summary", + "parser": "textfsm", + "jpath": "[?contains(@.member_interface, `{{ current_key | abbreviated_interface_name }}`)].bundle_name", + "post_processor": "{% if obj | length > 0 %}{{ obj[0] | canonical_interface_name }}{% else %}{{ obj }}{% endif %}", + "iterable_type": "str", + }, + { + "command": "show ip interface", + "parser": "textfsm", + "jpath": "[?interface=='{{ current_key }}'].{name:vrf}", + "post_processor": "{% if obj | length > 0 %}{{ obj[0] | key_exist_or_default('name') | tojson }}{% else %}{{ obj }}{% endif %}", + "iterable_type": "dict", + }, + ] + self.assertEqual(get_commands_to_run, expected_commands_to_run) + + def test_deduplicate_command_list_sync_data_cables(self): + get_commands_to_run = _get_commands_to_run( + self.expected_data["sync_network_data"], sync_vlans=False, sync_vrfs=False, sync_cables=True + ) + expected_commands_to_run = [ + {"command": "show version", "parser": "textfsm", "jpath": "[*].serial[]"}, + { + "command": "show interfaces", + "parser": "textfsm", + "jpath": "[*].interface", + "post_processor": "{% set result={} %}{% for interface in obj %}{{ result.update({interface: {}}) or '' }}{% endfor %}{{ result | tojson }}", + }, + { + "command": "show interfaces switchport", + "parser": "textfsm", + "jpath": "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, trunking_vlans: trunking_vlans}", + "post_processor": "{{ obj | interface_mode_logic }}", + "iterable_type": "str", + }, + { + "command": "show etherchannel summary", + "parser": "textfsm", + "jpath": "[?contains(@.member_interface, `{{ current_key | abbreviated_interface_name }}`)].bundle_name", + "post_processor": "{% if obj | length > 0 %}{{ obj[0] | canonical_interface_name }}{% else %}{{ obj }}{% endif %}", + "iterable_type": "str", + }, + { + "command": "show cdp neighbors detail", + "parser": "textfsm", + "jpath": "[*].{local_interface:local_interface, remote_interface:neighbor_interface, remote_device:neighbor_name}", + }, + ] + self.assertEqual(get_commands_to_run, expected_commands_to_run) diff --git a/nautobot_device_onboarding/tests/test_diffsync_utils.py b/nautobot_device_onboarding/tests/test_diffsync_utils.py new file mode 100644 index 00000000..10e2915e --- /dev/null +++ b/nautobot_device_onboarding/tests/test_diffsync_utils.py @@ -0,0 +1,140 @@ +"""Test Cisco Support adapter.""" + +from unittest.mock import MagicMock + +from nautobot.core.testing import TestCase +from nautobot.ipam.models import IPAddress, Prefix + +from nautobot_device_onboarding.tests import utils +from nautobot_device_onboarding.tests.fixtures import sync_network_data_fixture +from nautobot_device_onboarding.utils.diffsync_utils import ( + check_data_type, + generate_device_queryset_from_command_getter_result, + get_or_create_ip_address, + get_or_create_prefix, + retrieve_submitted_value, +) + + +class TestDiffSyncUtils(TestCase): + """Test Diffsync Utils functions.""" + + def setUp(self): # pylint: disable=invalid-name + """Initialize test case.""" + # Setup Nautobot Objectsself. + self.testing_objects = utils.sync_network_data_ensure_required_nautobot_objects() + self.command_getter_result = sync_network_data_fixture.sync_network_mock_data_valid + self.processed_csv_data = { + "10.1.1.10": { + "location": self.testing_objects["location"], + "namespace": self.testing_objects["namespace"], + "port": 22, + "timeout": 30, + "set_mgmt_only": True, + "update_devices_without_primary_ip": True, + "device_role": self.testing_objects["device_role"], + "device_status": self.testing_objects["status"], + "interface_status": self.testing_objects["status"], + "ip_address_status": self.testing_objects["status"], + "secrets_group": self.testing_objects["secrets_group"], + "platform": self.testing_objects["platform_1"], + }, + "10.1.1.11": { + "location": self.testing_objects["location"], + "namespace": self.testing_objects["namespace"], + "port": 22, + "timeout": 30, + "set_mgmt_only": True, + "update_devices_without_primary_ip": True, + "device_role": self.testing_objects["device_role"], + "device_status": self.testing_objects["status"], + "interface_status": self.testing_objects["status"], + "ip_address_status": self.testing_objects["status"], + "secrets_group": self.testing_objects["secrets_group"], + "platform": self.testing_objects["platform_2"], + }, + } + self.mock_job = MagicMock() + self.mock_job.location = self.testing_objects["location"] + self.mock_job.processed_csv_data = self.processed_csv_data + self.mock_job.location.name = "Site B" + self.mock_job.logger.error.return_value = None + self.mock_job.logger.warning.return_value = None + + def test_generate_device_queryset_from_command_getter_result(self): + """Test generating a queryset from data returned from command getter.""" + queryset, devices_with_errors = generate_device_queryset_from_command_getter_result( + job=self.mock_job, command_getter_result=self.command_getter_result + ) + hostnames_list = list(queryset.values_list("name", flat=True)) + self.assertEqual(2, queryset.count()) + self.assertEqual(devices_with_errors, []) + self.assertIn("demo-cisco-1", hostnames_list) + self.assertIn("demo-cisco-2", hostnames_list) + + def test_check_data_type(self): + """Test argument data type is a dict""" + # test existing prefix + data_type_check_result = check_data_type(self.command_getter_result) + self.assertEqual(True, data_type_check_result) + + data_type_check_result = check_data_type("Bad Input") + self.assertEqual(False, data_type_check_result) + + def test_get_or_create_prefix(self): + """Test getting a prefix and creating one if necessary.""" + # test existing prefix + prefix = get_or_create_prefix( + host="1.1.1.10", + mask_length="24", + default_status=self.testing_objects["status"], + namespace=self.testing_objects["namespace"], + job=None, + ) + queryset = Prefix.objects.filter(prefix=f"{prefix.network}/{prefix.prefix_length}") + self.assertEqual(1, queryset.count()) + with self.assertRaises(Exception): + # test prefix failure + get_or_create_prefix( + host="192.1.1.10", + mask_length="24", + default_status="bad_status", + namespace=self.testing_objects["namespace"], + job=None, + ) + + def test_get_or_create_ip_address(self): + """Test getting an ip address and creating one if necessary.""" + ip_address = get_or_create_ip_address( + host="192.1.1.1", + mask_length=24, + namespace=self.testing_objects["namespace"], + default_ip_status=self.testing_objects["status"], + default_prefix_status=self.testing_objects["status"], + job=None, + ) + prefix_queryset = Prefix.objects.filter(prefix="192.1.1.0/24") + ip_address_queryset = IPAddress.objects.filter(address=ip_address.address) + self.assertEqual(1, prefix_queryset.count()) + self.assertEqual(1, ip_address_queryset.count()) + + with self.assertRaises(Exception): + # test ip_address failure + get_or_create_ip_address( + host="200.1.1.1", + mask_length=24, + namespace=self.testing_objects["namespace"], + default_ip_status="bad status", + default_prefix_status=self.testing_objects["status"], + job=None, + ) + + def test_retrieve_submitted_value(self): + """Test retrieving values from processed csv data.""" + + location = retrieve_submitted_value(job=self.mock_job, ip_address="10.1.1.10", query_string="location") + self.assertEqual(self.testing_objects["location"].name, location.name) + + self.mock_job.processed_csv_data = None + location = retrieve_submitted_value(job=self.mock_job, ip_address="10.1.1.10", query_string="location") + self.assertEqual(self.mock_job.location.name, location.name) diff --git a/nautobot_device_onboarding/tests/test_empty_inventory.py b/nautobot_device_onboarding/tests/test_empty_inventory.py new file mode 100755 index 00000000..018cea0b --- /dev/null +++ b/nautobot_device_onboarding/tests/test_empty_inventory.py @@ -0,0 +1,21 @@ +"""Test empty inventory creation.""" + +import unittest + +from nautobot_device_onboarding.nornir_plays.empty_inventory import EmptyInventory + + +class TestEmptyInventory(unittest.TestCase): + """Test Empty Inventory Nornir Class.""" + + def setUp(self): + self.inv = EmptyInventory().load() + + def test_initialize_empty_inventory_hosts(self): + self.assertEqual(self.inv.hosts, {}) + + def test_initialize_empty_inventory_groups(self): + self.assertEqual(self.inv.groups, {}) + + def test_initialize_empty_inventory_defaults(self): + self.assertEqual(list(self.inv.defaults.data.keys()), ["platform_parsing_info", "network_driver_mappings"]) diff --git a/nautobot_device_onboarding/tests/test_formatter.py b/nautobot_device_onboarding/tests/test_formatter.py new file mode 100755 index 00000000..44096ec2 --- /dev/null +++ b/nautobot_device_onboarding/tests/test_formatter.py @@ -0,0 +1,739 @@ +"""Test for nornir plays in command_getter.""" + +import json +import os +import unittest +from unittest.mock import patch + +import yaml +from nornir.core.inventory import ConnectionOptions, Defaults, Host + +from nautobot_device_onboarding.nornir_plays.formatter import ( + extract_and_post_process, + perform_data_extraction, + normalize_processed_data, +) +from nautobot_device_onboarding.nornir_plays.transform import add_platform_parsing_info + +MOCK_DIR = os.path.join("nautobot_device_onboarding", "tests", "mock") + + +def find_files_by_prefix(directory, prefix): + """Finds all files within a directory whose names start with the given prefix. + + Args: + directory: The directory path to search. + prefix: The prefix string to match in filenames. + + Returns: + A list of filenames that start with the prefix. + """ + matching_files = [] + for filename in os.listdir(directory): + if filename.startswith(prefix): + matching_files.append(filename) + return matching_files + + +class TestFormatterNormalizeProccessedData(unittest.TestCase): + """Tests to ensure normalize_processed_data is working.""" + + def test_normalize_processed_data_str_stringified_integer(self): + self.assertEqual(normalize_processed_data("7201", "str"), "7201") + + def test_normalize_processed_data_str__list_index_string(self): + self.assertEqual(normalize_processed_data(["IOS-SW-1"], "str"), "IOS-SW-1") + + def test_normalize_processed_data_str__string(self): + self.assertEqual(normalize_processed_data("Vlan10", "str"), "Vlan10") + + def test_normalize_processed_data_none_stringified_integer(self): + self.assertEqual(normalize_processed_data("7201", None), "7201") + + def test_normalize_processed_data_none_list_index_string(self): + self.assertEqual(normalize_processed_data(["IOS-SW-1"], None), "IOS-SW-1") + + def test_normalize_processed_data_none_string(self): + self.assertEqual(normalize_processed_data("Vlan10", None), "Vlan10") + + def test_normalize_processed_data_none_int(self): + self.assertEqual(normalize_processed_data(10, None), 10) + + def test_normalize_processed_data_empty_none(self): + self.assertEqual(normalize_processed_data([], None), []) + + def test_normalize_processed_data_empty_str(self): + self.assertEqual(normalize_processed_data([], "str"), "") + + def test_normalize_processed_data_empty_dict(self): + self.assertEqual(normalize_processed_data([], "dict"), {}) + + def test_normalize_processed_data_empty_int(self): + self.assertEqual(normalize_processed_data([], "int"), []) + + def test_normalize_processed_data_str_int(self): + self.assertEqual(normalize_processed_data(10, "str"), "10") + + def test_normalize_processed_data_int_str(self): + self.assertEqual(normalize_processed_data("10", "int"), 10) + + def test_normalize_processed_data_int_int(self): + self.assertEqual(normalize_processed_data(10, "int"), 10) + + def test_normalize_processed_data_int_list_index_int(self): + self.assertEqual(normalize_processed_data([881], "int"), 881) + + +class TestFormatterExtractAndProcess(unittest.TestCase): + """Tests Basic Operations of formatter.""" + + def setUp(self): + with open(f"{MOCK_DIR}/command_mappers/mock_cisco_ios.yml", "r", encoding="utf-8") as parsing_info: + self.platform_parsing_info = yaml.safe_load(parsing_info) + with open(f"{MOCK_DIR}/cisco_ios/command_getter_result_1.json", "r", encoding="utf-8") as command_info: + self.command_outputs = json.loads(command_info.read()) + self.host = Host( + name="198.51.100.1", + hostname="198.51.100.1", + port=22, + username="username", + password="password", # nosec + platform="cisco_ios", + connection_options={ + "netmiko": ConnectionOptions( + hostname="198.51.100.1", + port=22, + username="username", + password="password", # nosec + platform="platform", + ) + }, + defaults=Defaults(data={"sync_vlans": False, "sync_vrfs": False, "sync_cables": False}), + ) + + def test_perform_data_extraction_simple_host_values(self): + self.assertEqual("198.51.100.1", self.host.name) + self.assertFalse(self.host.defaults.data.get("sync_vlans")) + self.assertFalse(self.host.defaults.data.get("sync_vrfs")) + self.assertFalse(self.host.defaults.data.get("sync_cables")) + + def test_extract_and_post_process_empty_command_result_str(self): + parsed_command_output = "" + actual_result = extract_and_post_process( + parsed_command_output, + self.platform_parsing_info["sync_devices"]["serial"], + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + None, + False, + ) + expected_parsed_result = ("", []) + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_empty_command_result_list(self): + parsed_command_output = [] + actual_result = extract_and_post_process( + parsed_command_output, + self.platform_parsing_info["sync_devices"]["serial"], + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + None, + False, + ) + expected_parsed_result = ([], []) + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_empty_command_result_dict(self): + parsed_command_output = {} + actual_result = extract_and_post_process( + parsed_command_output, + self.platform_parsing_info["sync_devices"]["serial"], + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + None, + False, + ) + expected_parsed_result = ({}, []) + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_empty_command_result_str_with_iterable(self): + parsed_command_output = "" + actual_result = extract_and_post_process( + parsed_command_output, + self.platform_parsing_info["sync_devices"]["serial"], + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + "str", + False, + ) + expected_parsed_result = ("", "") + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_empty_command_result_list_with_iterable(self): + parsed_command_output = [] + actual_result = extract_and_post_process( + parsed_command_output, + self.platform_parsing_info["sync_devices"]["serial"], + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + "dict", + False, + ) + expected_parsed_result = ([], {}) + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_empty_command_result_dict_with_iterable(self): + parsed_command_output = {} + actual_result = extract_and_post_process( + parsed_command_output, + self.platform_parsing_info["sync_devices"]["serial"], + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + "dict", + False, + ) + expected_parsed_result = ({}, {}) + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_result_dict_with_iterable(self): + parsed_command_output = self.command_outputs["show version"] + actual_result = extract_and_post_process( + parsed_command_output, + self.platform_parsing_info["sync_devices"]["serial"]["commands"][0], + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + None, + False, + ) + expected_parsed_result = (["FOC2341Y2CQ"], "FOC2341Y2CQ") + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_result_json_string(self): + parsed_command_output = '{"foo": "bar"}' + actual_result = extract_and_post_process( + parsed_command_output, + { + "command": "show version", + "parser": "textfsm", + "jpath": "foo", + }, + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + None, + False, + ) + expected_parsed_result = ("bar", "bar") + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_result_python_dict(self): + parsed_command_output = {"foo": "bar"} + actual_result = extract_and_post_process( + parsed_command_output, + { + "command": "show version", + "parser": "textfsm", + "jpath": "foo", + }, + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + None, + False, + ) + expected_parsed_result = ("bar", "bar") + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_result_non_json_string(self): + parsed_command_output = "baz" + actual_result = extract_and_post_process( + parsed_command_output, + { + "command": "show version", + "parser": "textfsm", + "jpath": "foo", + }, + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + None, + False, + ) + expected_parsed_result = ([], []) + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_result_non_json_string_with_iterable(self): + parsed_command_output = "bar" + actual_result = extract_and_post_process( + parsed_command_output, + { + "command": "show version", + "parser": "textfsm", + "jpath": "foo", + }, + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + "dict", + False, + ) + expected_parsed_result = ([], {}) + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_result_list_to_dict(self): + parsed_command_output = [{"foo": {"bar": "moo"}}] + actual_result = extract_and_post_process( + parsed_command_output, + { + "command": "show version", + "parser": "textfsm", + "jpath": "[*].foo", + }, + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + "dict", + False, + ) + expected_parsed_result = ([{"bar": "moo"}], {"bar": "moo"}) + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_result_list_to_string(self): + parsed_command_output = ["foo"] + actual_result = extract_and_post_process( + parsed_command_output, + { + "command": "show version", + "parser": "textfsm", + "jpath": "[*]", + }, + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + "str", + False, + ) + expected_parsed_result = (["foo"], "foo") + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_result_default_iterable(self): + parsed_command_output = [{"foo": {"bar": "moo"}}] + actual_result = extract_and_post_process( + parsed_command_output, + { + "command": "show version", + "parser": "textfsm", + "jpath": "[*].foo", + }, + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + None, + False, + ) + expected_parsed_result = ([{"bar": "moo"}], [{"bar": "moo"}]) + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_result_pre_processor(self): + parsed_command_output = [ + { + "access_vlan": "10", + "admin_mode": "trunk", + "interface": "Gi1/8", + "mode": "down (suspended member of bundle Po8)", + "native_vlan": "10", + "switchport": "Enabled", + "switchport_monitor": "", + "switchport_negotiation": "Off", + "trunking_vlans": ["10"], + "voice_vlan": "none", + } + ] + vlan_map_post_processed = {"1": "default", "10": "10.39.110.0/25.LAN"} + actual_result = extract_and_post_process( + parsed_command_output, + { + "command": "show interfaces switchport", + "parser": "textfsm", + "jpath": "[?interface=='{{ current_key | abbreviated_interface_name }}'].{admin_mode: admin_mode, mode: mode, access_vlan: access_vlan, trunking_vlans: trunking_vlans, native_vlan: native_vlan}", + "post_processor": "{{ obj | get_vlan_data(vlan_map, 'tagged') | tojson }}", + }, + { + "obj": "1.1.1.1", + "original_host": "1.1.1.1", + "vlan_map": vlan_map_post_processed, + "current_key": "GigabitEthernet1/8", + }, + None, + False, + ) + expected_parsed_result = ( + [ + { + "access_vlan": "10", + "admin_mode": "trunk", + "mode": "down (suspended member of bundle Po8)", + "native_vlan": "10", + "trunking_vlans": ["10"], + } + ], + [{"id": "10", "name": "10.39.110.0/25.LAN"}], + ) + self.assertEqual(expected_parsed_result, actual_result) + + def test_extract_and_post_process_result_list_to_string_vios(self): + parsed_command_output = [ + { + "software_image": "VIOS-ADVENTERPRISEK9-M", + "version": "15.8(3)M2", + "release": "fc2", + "rommon": "Bootstrap", + "hostname": "rtr-01", + "uptime": "1 week, 3 days, 16 hours, 11 minutes", + "uptime_years": "", + "uptime_weeks": "1", + "uptime_days": "3", + "uptime_hours": "16", + "uptime_minutes": "11", + "reload_reason": "Unknown reason", + "running_image": "/vios-adventerprisek9-m", + "hardware": ["IOSv"], + "serial": ["991UCMIHG4UAJ1J010CQG"], + "config_register": "0x0", + "mac_address": [], + "restarted": "", + } + ] + actual_result = extract_and_post_process( + parsed_command_output, + { + "command": "show version", + "parser": "textfsm", + "jpath": "[*].serial[]", + }, + {"obj": "1.1.1.1", "original_host": "1.1.1.1"}, + "str", + False, + ) + expected_parsed_result = (["991UCMIHG4UAJ1J010CQG"], "991UCMIHG4UAJ1J010CQG") + self.assertEqual(expected_parsed_result, actual_result) + + +class TestFormatterSyncDevices(unittest.TestCase): + """Tests to ensure formatter is working for sync devices 'ssot job'.""" + + @patch("nautobot_device_onboarding.nornir_plays.transform.GitRepository") + def setUp(self, mock_repo): + # Load the application command_mapper files + mock_repo.return_value = 0 + self.platform_parsing_info = add_platform_parsing_info() + self.host = Host( + name="198.51.100.1", + hostname="198.51.100.1", + port=22, + username="username", + password="password", # nosec + platform="", # Purposedly setting as None since we will loop through a single host instance for other tests. + connection_options={ + "netmiko": ConnectionOptions( + hostname="198.51.100.1", + port=22, + username="username", + password="password", # nosec + platform="platform", + ) + }, + defaults=Defaults(data={"sync_vlans": False, "sync_vrfs": False}), + ) + + def test_add_platform_parsing_info_sane_defaults(self): + # Note: This is also officially tested in test_transform, but secondary check here as well. + default_mappers = ["cisco_ios", "arista_eos", "cisco_wlc", "cisco_xe", "juniper_junos", "cisco_nxos"] + self.assertEqual(sorted(default_mappers), list(sorted(self.platform_parsing_info.keys()))) + + def test_create_inventory_host_per_platform(self): + for platform in list(self.platform_parsing_info.keys()): + self.host.platform = platform + with self.subTest(msg=f"Testing host with platform {platform}"): + self.assertEqual(platform, self.host.platform) + + def test_perform_data_extraction_simple_host_values(self): + for platform in list(self.platform_parsing_info.keys()): + self.host.platform = platform + with self.subTest(msg=f"Testing host with platform {platform}"): + self.assertEqual("198.51.100.1", self.host.name) + self.assertFalse(self.host.defaults.data.get("sync_vlans")) + self.assertFalse(self.host.defaults.data.get("sync_vrfs")) + + def test_perform_data_extraction_sync_devices(self): + for platform in list(self.platform_parsing_info.keys()): + self.host.platform = platform + current_test_dir = f"{MOCK_DIR}/{platform}/" + getters = find_files_by_prefix(current_test_dir, "command_getter") + # NOTE: Cleanup later, should always require tests to be present + if len(getters) > 0: + with self.subTest(msg=f"test_perform_data_extraction_sync_devices with platform {platform}"): + for command_getter_file in getters: + with open( + f"{MOCK_DIR}/{platform}/sync_devices/expected_result_{command_getter_file.split('_')[-1]}", + "r", + encoding="utf-8", + ) as expected_parsed: + expected_parsed_result = json.loads(expected_parsed.read()) + with open( + f"{MOCK_DIR}/{platform}/{command_getter_file}", "r", encoding="utf-8" + ) as command_info: + command_outputs = json.loads(command_info.read()) + actual_result = perform_data_extraction( + self.host, + self.platform_parsing_info[platform]["sync_devices"], + command_outputs, + job_debug=False, + ) + self.assertEqual(expected_parsed_result, actual_result) + + +class TestFormatterSyncNetworkDataNoOptions(unittest.TestCase): + """Tests to ensure formatter is working for sync devices 'ssot job'.""" + + @patch("nautobot_device_onboarding.nornir_plays.transform.GitRepository") + def setUp(self, mock_repo): + # Load the application command_mapper files + mock_repo.return_value = 0 + self.platform_parsing_info = add_platform_parsing_info() + self.host = Host( + name="198.51.100.1", + hostname="198.51.100.1", + port=22, + username="username", + password="password", # nosec + platform="", # Purposedly setting as None since we will loop through a single host instance for other tests. + connection_options={ + "netmiko": ConnectionOptions( + hostname="198.51.100.1", + port=22, + username="username", + password="password", # nosec + platform="platform", + ) + }, + defaults=Defaults(data={"sync_vlans": False, "sync_vrfs": False}), + ) + + def test_perform_data_extraction_simple_host_values(self): + for platform in list(self.platform_parsing_info.keys()): + self.host.platform = platform + with self.subTest(msg=f"Testing host with platform {platform}"): + self.assertEqual("198.51.100.1", self.host.name) + self.assertFalse(self.host.defaults.data.get("sync_vlans")) + self.assertFalse(self.host.defaults.data.get("sync_vrfs")) + + def test_perform_data_extraction_sync_network_data_no_options(self): + supported_platforms = list(self.platform_parsing_info.keys()) + supported_platforms.remove("cisco_wlc") + for platform in supported_platforms: + self.host.platform = platform + current_test_dir = f"{MOCK_DIR}/{platform}/" + getters = find_files_by_prefix(current_test_dir, "command_getter") + # NOTE: Cleanup later, should always require tests to be present + if len(getters) > 0: + with self.subTest( + msg=f"test_perform_data_extraction_sync_network_data_no_options with platform {platform}" + ): + for command_getter_file in getters: + with open( + f"{MOCK_DIR}/{platform}/sync_network_data_no_options/expected_result_{command_getter_file.split('_')[-1]}", + "r", + encoding="utf-8", + ) as expected_parsed: + expected_parsed_result = json.loads(expected_parsed.read()) + with open( + f"{MOCK_DIR}/{platform}/{command_getter_file}", "r", encoding="utf-8" + ) as command_info: + command_outputs = json.loads(command_info.read()) + actual_result = perform_data_extraction( + self.host, + self.platform_parsing_info[platform]["sync_network_data"], + command_outputs, + job_debug=False, + ) + self.assertEqual(expected_parsed_result, actual_result) + + +class TestFormatterSyncNetworkDataWithVrfs(unittest.TestCase): + """Tests to ensure formatter is working for sync devices 'ssot job'.""" + + @patch("nautobot_device_onboarding.nornir_plays.transform.GitRepository") + def setUp(self, mock_repo): + # Load the application command_mapper files + mock_repo.return_value = 0 + self.platform_parsing_info = add_platform_parsing_info() + self.host = Host( + name="198.51.100.1", + hostname="198.51.100.1", + port=22, + username="username", + password="password", # nosec + platform="", # Purposedly setting as None since we will loop through a single host instance for other tests. + connection_options={ + "netmiko": ConnectionOptions( + hostname="198.51.100.1", + port=22, + username="username", + password="password", # nosec + platform="platform", + ) + }, + defaults=Defaults(data={"sync_vlans": False, "sync_vrfs": True}), + ) + + def test_perform_data_extraction_simple_host_values(self): + for platform in list(self.platform_parsing_info.keys()): + self.host.platform = platform + with self.subTest(msg=f"Testing host with platform {platform}"): + self.assertEqual("198.51.100.1", self.host.name) + self.assertFalse(self.host.defaults.data.get("sync_vlans")) + self.assertTrue(self.host.defaults.data.get("sync_vrfs")) + + def test_perform_data_extraction_sync_network_data_with_vrfs(self): + supported_platforms = list(self.platform_parsing_info.keys()) + supported_platforms.remove("cisco_wlc") + for platform in supported_platforms: + self.host.platform = platform + current_test_dir = f"{MOCK_DIR}/{platform}/" + getters = find_files_by_prefix(current_test_dir, "command_getter") + # NOTE: Cleanup later, should always require tests to be present + if len(getters) > 0: + with self.subTest( + msg=f"test_perform_data_extraction_sync_network_data_with_vrfs with platform {platform}" + ): + for command_getter_file in getters: + with open( + f"{MOCK_DIR}/{platform}/sync_network_data_with_vrfs/expected_result_{command_getter_file.split('_')[-1]}", + "r", + encoding="utf-8", + ) as expected_parsed: + expected_parsed_result = json.loads(expected_parsed.read()) + with open( + f"{MOCK_DIR}/{platform}/{command_getter_file}", "r", encoding="utf-8" + ) as command_info: + command_outputs = json.loads(command_info.read()) + actual_result = perform_data_extraction( + self.host, + self.platform_parsing_info[platform]["sync_network_data"], + command_outputs, + job_debug=False, + ) + self.assertEqual(expected_parsed_result, actual_result) + + +class TestFormatterSyncNetworkDataWithVlans(unittest.TestCase): + """Tests to ensure formatter is working for sync devices 'ssot job'.""" + + @patch("nautobot_device_onboarding.nornir_plays.transform.GitRepository") + def setUp(self, mock_repo): + # Load the application command_mapper files + mock_repo.return_value = 0 + self.platform_parsing_info = add_platform_parsing_info() + self.host = Host( + name="198.51.100.1", + hostname="198.51.100.1", + port=22, + username="username", + password="password", # nosec + platform="", # Purposedly setting as None since we will loop through a single host instance for other tests. + connection_options={ + "netmiko": ConnectionOptions( + hostname="198.51.100.1", + port=22, + username="username", + password="password", # nosec + platform="platform", + ) + }, + defaults=Defaults(data={"sync_vlans": True, "sync_vrfs": False}), + ) + + def test_perform_data_extraction_simple_host_values(self): + for platform in list(self.platform_parsing_info.keys()): + self.host.platform = platform + with self.subTest(msg=f"Testing host with platform {platform}"): + self.assertEqual("198.51.100.1", self.host.name) + self.assertTrue(self.host.defaults.data.get("sync_vlans")) + self.assertFalse(self.host.defaults.data.get("sync_vrfs")) + + def test_perform_data_extraction_sync_network_data_with_vlans(self): + supported_platforms = list(self.platform_parsing_info.keys()) + supported_platforms.remove("cisco_wlc") + for platform in supported_platforms: + self.host.platform = platform + current_test_dir = f"{MOCK_DIR}/{platform}/" + getters = find_files_by_prefix(current_test_dir, "command_getter") + # NOTE: Cleanup later, should always require tests to be present + if len(getters) > 0: + with self.subTest( + msg=f"test_perform_data_extraction_sync_network_data_with_vlans with platform {platform}" + ): + for command_getter_file in getters: + with open( + f"{MOCK_DIR}/{platform}/sync_network_data_with_vlans/expected_result_{command_getter_file.split('_')[-1]}", + "r", + encoding="utf-8", + ) as expected_parsed: + expected_parsed_result = json.loads(expected_parsed.read()) + with open( + f"{MOCK_DIR}/{platform}/{command_getter_file}", "r", encoding="utf-8" + ) as command_info: + command_outputs = json.loads(command_info.read()) + actual_result = perform_data_extraction( + self.host, + self.platform_parsing_info[platform]["sync_network_data"], + command_outputs, + job_debug=False, + ) + self.assertEqual(expected_parsed_result, actual_result) + + +@unittest.skip(reason="Todo test sync network data with all options.") +class TestFormatterSyncNetworkDataAll(unittest.TestCase): + """Tests to ensure formatter is working for sync devices 'ssot job'.""" + + @patch("nautobot_device_onboarding.nornir_plays.transform.GitRepository") + def setUp(self, mock_repo): + # Load the application command_mapper files + mock_repo.return_value = 0 + self.platform_parsing_info = add_platform_parsing_info() + self.host = Host( + name="198.51.100.1", + hostname="198.51.100.1", + port=22, + username="username", + password="password", # nosec + platform="", # Purposedly setting as None since we will loop through a single host instance for other tests. + connection_options={ + "netmiko": ConnectionOptions( + hostname="198.51.100.1", + port=22, + username="username", + password="password", # nosec + platform="platform", + ) + }, + defaults=Defaults(data={"sync_vlans": True, "sync_vrfs": True}), + ) + + def test_perform_data_extraction_simple_host_values(self): + for platform in list(self.platform_parsing_info.keys()): + self.host.platform = platform + with self.subTest(msg=f"Testing host with platform {platform}"): + self.assertEqual("198.51.100.1", self.host.name) + self.assertTrue(self.host.defaults.data.get("sync_vlans")) + self.assertTrue(self.host.defaults.data.get("sync_vrfs")) + + def test_perform_data_extraction_sync_network_data_all(self): + supported_platforms = list(self.platform_parsing_info.keys()) + supported_platforms.remove("cisco_wlc") + for platform in supported_platforms: + self.host.platform = platform + current_test_dir = f"{MOCK_DIR}/{platform}/" + getters = find_files_by_prefix(current_test_dir, "command_getter") + # NOTE: Cleanup later, should always require tests to be present + if len(getters) > 0: + with self.subTest(msg=f"test_perform_data_extraction_sync_network_data_all with platform {platform}"): + for command_getter_file in getters: + with open( + f"{MOCK_DIR}/{platform}/sync_network_data_all/expected_result_{command_getter_file.split('_')[-1]}", + "r", + encoding="utf-8", + ) as expected_parsed: + expected_parsed_result = json.loads(expected_parsed.read()) + with open( + f"{MOCK_DIR}/{platform}/{command_getter_file}", "r", encoding="utf-8" + ) as command_info: + command_outputs = json.loads(command_info.read()) + actual_result = perform_data_extraction( + self.host, + self.platform_parsing_info[platform]["sync_network_data"], + command_outputs, + job_debug=False, + ) + self.assertEqual(expected_parsed_result, actual_result) diff --git a/nautobot_device_onboarding/tests/test_inventory_creator.py b/nautobot_device_onboarding/tests/test_inventory_creator.py new file mode 100755 index 00000000..de8b5a31 --- /dev/null +++ b/nautobot_device_onboarding/tests/test_inventory_creator.py @@ -0,0 +1,47 @@ +"""Test ability to create an inventory.""" + +import unittest +from unittest.mock import patch + +from nautobot.dcim.models import Platform + +from nautobot_device_onboarding.nornir_plays.inventory_creator import _set_inventory, guess_netmiko_device_type + + +class TestInventoryCreator(unittest.TestCase): + """Test ability to create an inventory.""" + + def setUp(self) -> None: + self.host_ip = "198.51.100.1" + self.hostname = "router1.example.com" + self.username = "admin" + self.password = "password" # nosec + self.port = 22 + self.platform = Platform(name="cisco_xe", network_driver="cisco_xe") + + @patch("nautobot_device_onboarding.nornir_plays.inventory_creator.SSHDetect") + def test_guess_device_type_success(self, mock_sshdetect): + mock_sshdetect.return_value.autodetect.return_value = "cisco_ios" + device_type, exception = guess_netmiko_device_type(self.hostname, self.username, self.password, self.port) + self.assertEqual(device_type, "cisco_ios") + self.assertIsNone(exception) + + @patch("nautobot_device_onboarding.nornir_plays.inventory_creator.SSHDetect") + def test_guess_device_type_exception(self, mock_sshdetect): + mock_sshdetect.return_value.autodetect.side_effect = Exception("SSH Connection Failed") + device_type, exception = guess_netmiko_device_type(self.hostname, self.username, self.password, self.port) + self.assertIsNone(device_type) + self.assertIsInstance(exception, Exception) + + @patch("nautobot_device_onboarding.nornir_plays.inventory_creator.SSHDetect") + def test_set_inventory_no_platform(self, mock_sshdetect): + mock_sshdetect.return_value.autodetect.return_value = "cisco_ios" + inv, exception = _set_inventory(self.host_ip, None, self.port, self.username, self.password) + + self.assertEqual(inv["198.51.100.1"].platform, "cisco_ios") + self.assertIsNone(exception) + + def test_set_inventory_specified_platform(self): + inv, exception = _set_inventory(self.host_ip, self.platform, self.port, self.username, self.password) + self.assertEqual(inv["198.51.100.1"].platform, self.platform.name) + self.assertIsNone(exception) diff --git a/nautobot_device_onboarding/tests/test_jinja_filters.py b/nautobot_device_onboarding/tests/test_jinja_filters.py new file mode 100755 index 00000000..42fb0a0b --- /dev/null +++ b/nautobot_device_onboarding/tests/test_jinja_filters.py @@ -0,0 +1,262 @@ +"""Test Filters for Jinja2 PostProcessing.""" + +import unittest +import unittest.mock +from nautobot_device_onboarding.jinja_filters import ( + extract_prefix, + flatten_dict_from_value, + flatten_list_of_dict_from_value, + get_entry_from_dict, + get_vlan_data, + interface_mode_logic, + interface_status_to_bool, + key_exist_or_default, + map_interface_type, + parse_junos_ip_address, + port_mode_to_nautobot, + remove_fqdn, +) + + +class TestJinjaFilters(unittest.TestCase): + """Test all the jinja filters defined.""" + + def test_map_interface_type_default(self): + """Map interface type to a Nautobot type.""" + self.assertEqual(map_interface_type("foo"), "other") + + def test_map_interface_type_valid_key(self): + """Map interface type to a Nautobot type.""" + self.assertEqual(map_interface_type("ethernet"), "1000base-t") + + def test_extract_prefix_valid_without_slash(self): + """Extract the prefix length from the IP/Prefix. E.g 192.168.1.1/24.""" + self.assertEqual(extract_prefix("198.51.100.1"), "198.51.100.1") + + def test_extract_prefix_valid_with_slash(self): + """Extract the prefix length from the IP/Prefix. E.g 192.168.1.1/24.""" + self.assertEqual(extract_prefix("198.51.100.1/24"), "24") + + def test_interface_status_to_bool_down(self): + """Take links or admin status and change to boolean.""" + self.assertFalse(interface_status_to_bool("down")) + + def test_interface_status_to_bool_admindown(self): + """Take links or admin status and change to boolean.""" + self.assertFalse(interface_status_to_bool("Administratively Down")) + + def test_interface_status_to_bool_linkdown(self): + """Take links or admin status and change to boolean.""" + self.assertFalse(interface_status_to_bool("link status down")) + + def test_interface_status_to_bool_up(self): + """Take links or admin status and change to boolean.""" + self.assertTrue(interface_status_to_bool("up")) + + def test_interface_status_to_bool_up_upper(self): + """Take links or admin status and change to boolean.""" + self.assertTrue(interface_status_to_bool("UP")) + + def test_port_mode_to_nautobot_default(self): + """Take links or admin status and change to boolean.""" + self.assertEqual(port_mode_to_nautobot("foo"), "") + + def test_port_mode_to_nautobot_valid_key(self): + """Take links or admin status and change to boolean.""" + self.assertEqual(port_mode_to_nautobot("bridged"), "tagged") + + def test_key_exist_or_default_key_valid(self): + """Take a dict with a key and if its not truthy return a default.""" + self.assertEqual(key_exist_or_default({"foo": "bar"}, "foo"), {"foo": "bar"}) + + def test_key_exist_or_default_key_invalid(self): + """Take a dict with a key and if its not truthy return a default.""" + self.assertEqual(key_exist_or_default({"foo": "bar"}, "baz"), {}) + + def test_flatten_list_of_dict_from_value_valid(self): + """Takes a list of dictionaries with a value and flattens it.""" + sent_data = [{"1": {"name": "name1"}}, {"2": {"name": "name2"}}] + expected_data = {"1": "name1", "2": "name2"} + self.assertEqual(flatten_list_of_dict_from_value(sent_data, "name"), expected_data) + + def test_flatten_dict_from_value_valid(self): + """Takes a dictionary of dictionaries with a value and flattens it.""" + sent_data = {"1": {"name": "name1"}, "2": {"name": "name2"}} + expected_data = {"1": "name1", "2": "name2"} + self.assertEqual(flatten_dict_from_value(sent_data, "name"), expected_data) + + def test_get_entry_from_dict_valid(self): + """Take a dict with a key and return its object.""" + self.assertEqual(get_entry_from_dict({"foo": "bar"}, "foo"), "bar") + + def test_get_entry_from_dict_default(self): + """Take a dict with a key and return its object.""" + self.assertEqual(get_entry_from_dict({"foo": "bar"}, "baz"), "") + + def test_interface_mode_logic_access(self): + """Logic to translate network modes to nautobot mode.""" + expected_value = "access" + actual_value = interface_mode_logic( + [{"admin_mode": "access", "mode": "access", "access_vlan": "1", "trunking_vlans": "10"}] + ) + self.assertEqual(expected_value, actual_value) + + def test_interface_mode_logic_trunk_tagged_all_str(self): + """Logic to translate network modes to nautobot mode.""" + expected_value = "tagged-all" + actual_value = interface_mode_logic( + [{"admin_mode": "trunk", "mode": "trunk", "access_vlan": "1", "trunking_vlans": "ALL"}] + ) + self.assertEqual(expected_value, actual_value) + + def test_interface_mode_logic_trunk_tagged_range_str(self): + """Logic to translate network modes to nautobot mode.""" + expected_value = "tagged-all" + actual_value = interface_mode_logic( + [{"admin_mode": "trunk", "mode": "trunk", "access_vlan": "1", "trunking_vlans": "1-4094"}] + ) + self.assertEqual(expected_value, actual_value) + + def test_interface_mode_logic_trunk_tagged_all_list(self): + """Logic to translate network modes to nautobot mode.""" + expected_value = "tagged-all" + actual_value = interface_mode_logic( + [{"admin_mode": "trunk", "mode": "trunk", "access_vlan": "1", "trunking_vlans": ["ALL"]}] + ) + self.assertEqual(expected_value, actual_value) + + def test_interface_mode_logic_trunk_tagged_range_list(self): + """Logic to translate network modes to nautobot mode.""" + expected_value = "tagged-all" + actual_value = interface_mode_logic( + [{"admin_mode": "trunk", "mode": "trunk", "access_vlan": "1", "trunking_vlans": ["1-4094"]}] + ) + self.assertEqual(expected_value, actual_value) + + def test_interface_mode_logic_trunk_single_tagged(self): + """Logic to translate network modes to nautobot mode.""" + expected_value = "tagged" + actual_value = interface_mode_logic( + [{"admin_mode": "trunk", "mode": "trunk", "access_vlan": "1", "trunking_vlans": ["10"]}] + ) + self.assertEqual(expected_value, actual_value) + + def test_interface_mode_logic_dynamic_access(self): + """Logic to translate network modes to nautobot mode.""" + expected_value = "access" + actual_value = interface_mode_logic( + [{"admin_mode": "dynamic", "mode": "access", "access_vlan": "1", "trunking_vlans": ["10"]}] + ) + self.assertEqual(expected_value, actual_value) + + def test_interface_mode_logic_dynamic_trunk_all(self): + """Logic to translate network modes to nautobot mode.""" + expected_value = "tagged-all" + actual_value = interface_mode_logic( + [{"admin_mode": "dynamic", "mode": "trunk", "access_vlan": "1", "trunking_vlans": ["ALL"]}] + ) + self.assertEqual(expected_value, actual_value) + + def test_interface_mode_logic_dynamic_trunk_single(self): + """Logic to translate network modes to nautobot mode.""" + expected_value = "tagged" + actual_value = interface_mode_logic( + [{"admin_mode": "dynamic", "mode": "trunk", "access_vlan": "1", "trunking_vlans": "10"}] + ) + self.assertEqual(expected_value, actual_value) + + @unittest.mock.patch("nautobot_device_onboarding.jinja_filters.interface_mode_logic") + def test_get_vlan_data_empty_item_data(self, mock_mode): + """Get vlan information from an item.""" + mock_mode.return_value = "access" + expected_value = [] + actual_value = get_vlan_data([], [], "tagged") + self.assertEqual(expected_value, actual_value) + + @unittest.mock.patch("nautobot_device_onboarding.jinja_filters.interface_mode_logic") + def test_get_vlan_data_tagged_all_tagged_all(self, mock_mode): + """Get vlan information from an item.""" + mock_mode.return_value = "tagged-all" + expected_value = [] + actual_value = get_vlan_data([{"access_vlan": "10", "trunking_vlans": ["ALL"]}], [{"10": "VLAN0010"}], "tagged") + self.assertEqual(expected_value, actual_value) + + @unittest.mock.patch("nautobot_device_onboarding.jinja_filters.interface_mode_logic") + def test_get_vlan_data_tagged_all_tagged_range(self, mock_mode): + """Get vlan information from an item.""" + mock_mode.return_value = "tagged-all" + expected_value = [] + actual_value = get_vlan_data( + [{"access_vlan": "10", "trunking_vlans": ["1-4094"]}], {"10": "VLAN0010"}, "tagged" + ) + self.assertEqual(expected_value, actual_value) + + @unittest.mock.patch("nautobot_device_onboarding.jinja_filters.interface_mode_logic") + def test_get_vlan_data_access_create_defined_name(self, mock_mode): + """Get vlan information from an item.""" + mock_mode.return_value = "access" + expected_value = [{"id": "10", "name": "DATA"}] + actual_value = get_vlan_data([{"access_vlan": "10", "trunking_vlans": ["1-4094"]}], {"10": "DATA"}, "untagged") + self.assertEqual(expected_value, actual_value) + + @unittest.mock.patch("nautobot_device_onboarding.jinja_filters.interface_mode_logic") + def test_get_vlan_data_access_tagged_vlans_defined_trunking_as_list(self, mock_mode): + """Get vlan information from an item.""" + mock_mode.return_value = "tagged" + expected_value = [{"id": "10", "name": "DATA"}] + actual_value = get_vlan_data([{"access_vlan": "10", "trunking_vlans": ["10"]}], {"10": "DATA"}, "tagged") + self.assertEqual(expected_value, actual_value) + + @unittest.mock.patch("nautobot_device_onboarding.jinja_filters.interface_mode_logic") + def test_get_vlan_data_access_tagged_vlans_defined_trunking_as_str(self, mock_mode): + """Get vlan information from an item.""" + mock_mode.return_value = "tagged" + expected_value = [{"id": "10", "name": "DATA"}] + actual_value = get_vlan_data([{"access_vlan": "10", "trunking_vlans": "10"}], {"10": "DATA"}, "tagged") + self.assertEqual(expected_value, actual_value) + + @unittest.mock.patch("nautobot_device_onboarding.jinja_filters.interface_mode_logic") + def test_get_vlan_data_access_tagged_vlans_no_name_trunking_as_list(self, mock_mode): + """Get vlan information from an item.""" + mock_mode.return_value = "tagged" + expected_value = [{"id": "12", "name": "VLAN0012"}] + actual_value = get_vlan_data([{"access_vlan": "10", "trunking_vlans": ["12"]}], {"10": "DATA"}, "tagged") + self.assertEqual(expected_value, actual_value) + + @unittest.mock.patch("nautobot_device_onboarding.jinja_filters.interface_mode_logic") + def test_get_vlan_data_access_tagged_vlans_no_name_trunking_as_str(self, mock_mode): + """Get vlan information from an item.""" + mock_mode.return_value = "tagged" + expected_value = [{"id": "12", "name": "VLAN0012"}] + actual_value = get_vlan_data([{"access_vlan": "10", "trunking_vlans": "12"}], {"10": "DATA"}, "tagged") + self.assertEqual(expected_value, actual_value) + + def test_parse_junos_ip_address_values_as_list_single(self): + """Parse Junos IP and destination prefix.""" + data = [{"prefix_length": ["10.65.229.106/31"], "ip_address": ["10.65.229.106"]}] + expected = [{"prefix_length": "31", "ip_address": "10.65.229.106"}] + self.assertEqual(parse_junos_ip_address(data), expected) + + @unittest.skip("Need to correct assert used for list of dictionaries.") + def test_parse_junos_ip_address_values_as_list_multiple(self): + """Parse Junos IP and destination prefix.""" + data = [{"prefix_length": ["10.65.133.0/29", "10.65.133.0/29"], "ip_address": ["10.65.133.1", "10.65.133.3"]}] + expected = [ + {"prefix_length": "29", "ip_address": "10.65.133.1"}, + {"ip_address": "10.65.133.3", "prefix_length": "29"}, + ] + self.assertEqual(parse_junos_ip_address(data), expected) + + def test_parse_junos_ip_address_values_as_empty_list(self): + """Parse Junos IP and destination prefix.""" + data = [{"prefix_length": [], "ip_address": []}] + self.assertEqual(parse_junos_ip_address(data), []) + + def test_parse_junos_ip_address_values_as_none(self): + """Parse Junos IP and destination prefix.""" + data = [{"prefix_length": None, "ip_address": None}] + self.assertEqual(parse_junos_ip_address(data), []) + + def test_remove_fqdn(self): + """Remove the FQDN from the hostname.""" + self.assertEqual(remove_fqdn("foo.example.com"), "foo") diff --git a/nautobot_device_onboarding/tests/test_jobs.py b/nautobot_device_onboarding/tests/test_jobs.py new file mode 100644 index 00000000..233227ad --- /dev/null +++ b/nautobot_device_onboarding/tests/test_jobs.py @@ -0,0 +1,188 @@ +"""Test Jobs.""" + +from unittest.mock import patch + +from nautobot.apps.testing import create_job_result_and_run_job +from nautobot.core.testing import TransactionTestCase +from nautobot.dcim.models import Device, Interface, Manufacturer, Platform +from nautobot.extras.choices import JobResultStatusChoices + +from nautobot_device_onboarding import jobs +from nautobot_device_onboarding.tests import utils +from nautobot_device_onboarding.tests.fixtures import sync_devices_fixture, sync_network_data_fixture + + +class SSOTSyncDevicesTestCase(TransactionTestCase): + """Test SSOTSyncDevices class.""" + + databases = ("default", "job_logs") + + def setUp(self): # pylint: disable=invalid-name + """Initialize test case.""" + # Setup Nautobot Objects + self.testing_objects = utils.sync_devices_ensure_required_nautobot_objects__jobs_testing() + + @patch("nautobot_device_onboarding.diffsync.adapters.sync_devices_adapters.sync_devices_command_getter") + def test_sync_devices__success(self, device_data): + """Test a successful run of the 'Sync Devices From Network' job""" + device_data.return_value = sync_devices_fixture.sync_devices_mock_data_valid + + job_form_inputs = { + "debug": True, + "dryrun": False, + "csv_file": None, + "location": self.testing_objects["location_1"].pk, + "namespace": self.testing_objects["namespace"].pk, + "ip_addresses": "10.1.1.10,10.1.1.11", + "port": 22, + "timeout": 30, + "set_mgmt_only": True, + "update_devices_without_primary_ip": True, + "device_role": self.testing_objects["device_role"].pk, + "device_status": self.testing_objects["status"].pk, + "interface_status": self.testing_objects["status"].pk, + "ip_address_status": self.testing_objects["status"].pk, + "secrets_group": self.testing_objects["secrets_group"].pk, + "platform": None, + "memory_profiling": False, + } + job_result = create_job_result_and_run_job( + module="nautobot_device_onboarding.jobs", name="SSOTSyncDevices", **job_form_inputs + ) + + self.assertEqual(job_result.status, JobResultStatusChoices.STATUS_SUCCESS) + self.assertEqual(2, Device.objects.all().count()) + for returned_device_ip, data in device_data.return_value.items(): + device = Device.objects.get(serial=data["serial"]) + self.assertEqual(device.name, data["hostname"]) + self.assertEqual(device.serial, data["serial"]) + self.assertEqual(device.device_type.model, data["device_type"]) + self.assertEqual(device.device_type.manufacturer.name, data["manufacturer"]) + self.assertEqual(device.platform.name, data["platform"]) + self.assertEqual(device.platform.network_driver, data["network_driver"]) + self.assertEqual(device.primary_ip.host, returned_device_ip) + self.assertEqual(device.primary_ip.mask_length, data["mask_length"]) + + mgmt_interface = Interface.objects.get(device=device, name=data["mgmt_interface"]) + self.assertEqual(mgmt_interface.mgmt_only, True) + self.assertIn(returned_device_ip, list(mgmt_interface.ip_addresses.all().values_list("host", flat=True))) + + def test_process_csv_data(self): + """Test processing of CSV file used for onboarding jobs.""" + + manufacturer, _ = Manufacturer.objects.get_or_create(name="Cisco") + platform, _ = Platform.objects.get_or_create( + name="cisco_ios", network_driver="cisco_ios", manufacturer=manufacturer + ) + onboarding_job = jobs.SSOTSyncDevices() + with open("nautobot_device_onboarding/tests/fixtures/onboarding_csv_fixture.csv", "rb") as csv_file: + processed_csv_data = onboarding_job._process_csv_data(csv_file=csv_file) # pylint: disable=protected-access + self.assertEqual(processed_csv_data["10.1.1.10"]["location"], self.testing_objects["location_1"]) + self.assertEqual(processed_csv_data["10.1.1.10"]["namespace"], self.testing_objects["namespace"]) + self.assertEqual(processed_csv_data["10.1.1.10"]["port"], 22) + self.assertEqual(processed_csv_data["10.1.1.10"]["timeout"], 30) + self.assertEqual(processed_csv_data["10.1.1.10"]["set_mgmt_only"], True) + self.assertEqual(processed_csv_data["10.1.1.10"]["update_devices_without_primary_ip"], True) + self.assertEqual(processed_csv_data["10.1.1.10"]["device_role"], self.testing_objects["device_role"]) + self.assertEqual(processed_csv_data["10.1.1.10"]["device_status"], self.testing_objects["status"]) + self.assertEqual(processed_csv_data["10.1.1.10"]["interface_status"], self.testing_objects["status"]) + self.assertEqual(processed_csv_data["10.1.1.10"]["ip_address_status"], self.testing_objects["status"]) + self.assertEqual(processed_csv_data["10.1.1.10"]["secrets_group"], self.testing_objects["secrets_group"]) + self.assertEqual(processed_csv_data["10.1.1.10"]["platform"], platform) + + self.assertEqual(processed_csv_data["10.1.1.11"]["location"], self.testing_objects["location_2"]) + self.assertEqual(processed_csv_data["10.1.1.11"]["namespace"], self.testing_objects["namespace"]) + self.assertEqual(processed_csv_data["10.1.1.11"]["port"], 22) + self.assertEqual(processed_csv_data["10.1.1.11"]["timeout"], 30) + self.assertEqual(processed_csv_data["10.1.1.11"]["set_mgmt_only"], False) + self.assertEqual(processed_csv_data["10.1.1.11"]["update_devices_without_primary_ip"], False) + self.assertEqual(processed_csv_data["10.1.1.11"]["device_role"], self.testing_objects["device_role"]) + self.assertEqual(processed_csv_data["10.1.1.11"]["device_status"], self.testing_objects["status"]) + self.assertEqual(processed_csv_data["10.1.1.11"]["interface_status"], self.testing_objects["status"]) + self.assertEqual(processed_csv_data["10.1.1.11"]["ip_address_status"], self.testing_objects["status"]) + self.assertEqual(processed_csv_data["10.1.1.11"]["secrets_group"], self.testing_objects["secrets_group"]) + self.assertEqual(processed_csv_data["10.1.1.11"]["platform"], platform) + + def test_process_csv_data__bad_file(self): + """Test error checking of a bad CSV file used for onboarding jobs.""" + manufacturer, _ = Manufacturer.objects.get_or_create(name="Cisco") + Platform.objects.get_or_create(name="cisco_ios", network_driver="cisco_ios", manufacturer=manufacturer) + onboarding_job = jobs.SSOTSyncDevices() + with open("nautobot_device_onboarding/tests/fixtures/onboarding_csv_fixture_bad_data.csv", "rb") as csv_file: + processed_csv_data = onboarding_job._process_csv_data(csv_file=csv_file) # pylint: disable=protected-access + self.assertEqual(processed_csv_data, None) + + def test_process_csv_data__empty_file(self): + """Test error checking of a bad CSV file used for onboarding jobs.""" + onboarding_job = jobs.SSOTSyncDevices() + with open("nautobot_device_onboarding/tests/fixtures/onboarding_csv_fixture_empty.csv", "rb") as csv_file: + processed_csv_data = onboarding_job._process_csv_data(csv_file=csv_file) # pylint: disable=protected-access + self.assertEqual(processed_csv_data, None) + + +class SSOTSyncNetworkDataTestCase(TransactionTestCase): + """Test SSOTSyncNetworkData class.""" + + databases = ("default", "job_logs") + + def setUp(self): # pylint: disable=invalid-name + """Initialize test case.""" + # Setup Nautobot Objects + self.testing_objects = utils.sync_network_data_ensure_required_nautobot_objects() + + @patch("nautobot_device_onboarding.diffsync.adapters.sync_network_data_adapters.sync_network_data_command_getter") + def test_sync_network_data__success(self, device_data): + """Test a successful run of the 'Sync Network Data From Network' job""" + device_data.return_value = sync_network_data_fixture.sync_network_mock_data_valid + devices = ["demo-cisco-1", "demo-cisco-2"] + device_ids_to_sync = list(Device.objects.filter(name__in=devices).values_list("id", flat=True)) + + job_form_inputs = { + "debug": True, + "dryrun": False, + "sync_vlans": True, + "sync_vrfs": True, + "sync_cables": True, + "namespace": self.testing_objects["namespace"].pk, + "interface_status": self.testing_objects["status"].pk, + "ip_address_status": self.testing_objects["status"].pk, + "default_prefix_status": self.testing_objects["status"].pk, + "devices": device_ids_to_sync, + "location": None, + "device_role": None, + "platform": None, + "memory_profiling": False, + } + job_result = create_job_result_and_run_job( + module="nautobot_device_onboarding.jobs", name="SSOTSyncNetworkData", **job_form_inputs + ) + + self.assertEqual(job_result.status, JobResultStatusChoices.STATUS_SUCCESS) + for returned_device_hostname, data in device_data.return_value.items(): + device = Device.objects.get(serial=data["serial"]) + self.assertEqual(device.name, returned_device_hostname) + for interface in device.interfaces.all(): + interface_data = data["interfaces"][interface.name] + self.assertEqual(interface.status, self.testing_objects["status"]) + self.assertEqual(interface.type, interface_data["type"]) + self.assertEqual(interface.mac_address, interface_data["mac_address"]) + self.assertEqual(interface.mtu, int(interface_data["mtu"])) + self.assertEqual(interface.description, interface_data["description"]) + self.assertEqual(interface.enabled, interface_data["link_status"]) + self.assertEqual(interface.mode, interface_data["802.1Q_mode"]) + + for ip_address in interface_data["ip_addresses"]: + self.assertIn( + ip_address["ip_address"], list(interface.ip_addresses.all().values_list("host", flat=True)) + ) + + for tagged_vlan in interface_data["tagged_vlans"]: + self.assertIn( + int(tagged_vlan["id"]), list(interface.tagged_vlans.all().values_list("vid", flat=True)) + ) + + if interface_data["untagged_vlan"]: + self.assertEqual(interface.untagged_vlan.vid, int(interface_data["untagged_vlan"]["id"])) + + if interface_data["vrf"]: + self.assertEqual(interface.vrf.name, interface_data["vrf"]["name"]) diff --git a/nautobot_device_onboarding/tests/test_nautobot_keeper.py b/nautobot_device_onboarding/tests/test_nautobot_keeper.py index a270a1f1..35c542b0 100644 --- a/nautobot_device_onboarding/tests/test_nautobot_keeper.py +++ b/nautobot_device_onboarding/tests/test_nautobot_keeper.py @@ -1,12 +1,14 @@ """Unit tests for nautobot_device_onboarding.onboard module and its classes.""" + from django.conf import settings from django.contrib.contenttypes.models import ContentType from django.test import TestCase from nautobot.dcim.choices import InterfaceTypeChoices -from nautobot.dcim.models import Location, LocationType, Manufacturer, DeviceType, Device, Interface, Platform -from nautobot.extras.models import Role, Status, CustomField -from nautobot.ipam.models import IPAddress +from nautobot.dcim.models import Device, DeviceType, Interface, Location, LocationType, Manufacturer, Platform from nautobot.extras.choices import CustomFieldTypeChoices +from nautobot.extras.models import CustomField, Role, Status +from nautobot.extras.models.secrets import SecretsGroup +from nautobot.ipam.models import IPAddress from nautobot_device_onboarding.exceptions import OnboardException from nautobot_device_onboarding.nautobot_keeper import NautobotKeeper @@ -435,7 +437,7 @@ def test_ensure_interface_exist(self): self.assertEqual(nbk.nb_mgmt_ifname, intf) def test_ensure_primary_ip_not_exist(self): - """Verify ensure_primary_ip function when the IP address do not already exist.""" + """Verify ensure_primary_ip function when the IP address does not already exist.""" onboarding_kwargs = { "netdev_hostname": "device1", "netdev_nb_role_name": PLUGIN_SETTINGS["default_device_role"], @@ -563,3 +565,29 @@ def test_ensure_custom_fields(self): self.assertEqual(device.device_type.manufacturer.cf["cf_manufacturer"], "Foobar!") self.assertEqual(device.interfaces.get(name="Management0").cf["cf_interface"], "2016-06-23") self.assertEqual(device.primary_ip.cf["cf_ipaddress"], "http://example.com/") + + def test_ensure_secret_group_exist(self): + "Verify secret group assignment to device when specified in plugin config." + + PLUGIN_SETTINGS["assign_secrets_group"] = True + test_secret_group = SecretsGroup.objects.create(name="test_secret_group") + + onboarding_kwargs = { + "netdev_hostname": "device1", + "netdev_nb_role_name": "switch", + "netdev_vendor": "Cisco", + "netdev_model": "c2960", + "netdev_nb_location_name": self.site1, + "netdev_netmiko_device_type": "cisco_ios", + "netdev_serial_number": "123456", + "netdev_mgmt_ip_address": "192.0.2.10", + "netdev_mgmt_ifname": "GigaEthernet0", + "netdev_nb_credentials": test_secret_group, + } + + nbk = NautobotKeeper(**onboarding_kwargs) + + nbk.ensure_device() + + nbk.ensure_secret_group() + self.assertEqual(nbk.netdev_nb_credentials.name, test_secret_group.name) diff --git a/nautobot_device_onboarding/tests/test_onboarding.py b/nautobot_device_onboarding/tests/test_onboarding.py index f427bba2..e2513064 100644 --- a/nautobot_device_onboarding/tests/test_onboarding.py +++ b/nautobot_device_onboarding/tests/test_onboarding.py @@ -1,4 +1,5 @@ """Unit tests for nautobot_device_onboarding.netdev_keeper module and its classes.""" + # from unittest import mock from django.conf import settings @@ -14,7 +15,7 @@ PLUGIN_SETTINGS = settings.PLUGINS_CONFIG["nautobot_device_onboarding"] -class NapalmMock: # pylint: disable=too-few-public-methods +class NapalmMock: """Base napalm mock class for tests.""" def __init__(self, *args, **kwargs): @@ -66,7 +67,7 @@ def get_interfaces_ip(self): return {"Vlan100": {"ipv4": {"2.2.2.2": {"prefix_length": 32}}}} -class SSHDetectMock: # pylint: disable=too-few-public-methods +class SSHDetectMock: """SSHDetect mock class for tests.""" def __init__(self, *args, **kwargs): diff --git a/nautobot_device_onboarding/tests/test_sync_devices_adapters.py b/nautobot_device_onboarding/tests/test_sync_devices_adapters.py new file mode 100644 index 00000000..790b4335 --- /dev/null +++ b/nautobot_device_onboarding/tests/test_sync_devices_adapters.py @@ -0,0 +1,152 @@ +"""Test Cisco Support adapter.""" + +from unittest.mock import patch + +from diffsync.exceptions import ObjectNotFound +from nautobot.core.testing import TransactionTestCase +from nautobot.dcim.models import Device, DeviceType, Manufacturer, Platform +from nautobot.extras.models import JobResult + +from nautobot_device_onboarding.diffsync.adapters.sync_devices_adapters import ( + SyncDevicesNautobotAdapter, + SyncDevicesNetworkAdapter, +) +from nautobot_device_onboarding.jobs import SSOTSyncDevices +from nautobot_device_onboarding.tests import utils +from nautobot_device_onboarding.tests.fixtures import sync_devices_fixture + + +class SyncDevicesNetworkAdapaterTestCase(TransactionTestCase): + """Test SyncDevicesNetworkAdapter class.""" + + databases = ("default", "job_logs") + + def setUp(self): # pylint: disable=invalid-name + """Initialize test case.""" + # Setup Job + self.job = SSOTSyncDevices() + self.job.job_result = JobResult.objects.create( + name=self.job.class_path, user=None, task_name="fake task", worker="default" + ) + self.sync_devices_adapter = SyncDevicesNetworkAdapter(job=self.job, sync=None) + + # Setup Nautobot Objects + self.testing_objects = utils.sync_devices_ensure_required_nautobot_objects() + + @patch("nautobot_device_onboarding.diffsync.adapters.sync_devices_adapters.sync_devices_command_getter") + def test_load(self, device_data): + """Test loading data returned from command getter into the diffsync store.""" + + # Mock return from command_getter + device_data.return_value = sync_devices_fixture.sync_devices_mock_data_valid + + self.job.debug = True + self.job.ip_addresses = "" + self.job.location = self.testing_objects["location"] + self.job.namespace = self.testing_objects["namespace"] + self.job.port = 22 + self.job.timeout = 30 + self.job.update_devices_without_primary_ip = True + self.job.device_role = self.testing_objects["device_role"] + self.job.device_status = self.testing_objects["status"] + self.job.interface_status = self.testing_objects["status"] + self.job.ip_address_status = self.testing_objects["status"] + self.job.secrets_group = self.testing_objects["secrets_group"] + self.job.platform = None + + self.sync_devices_adapter.load() + + returned_device_data = self.sync_devices_adapter.device_data + + for device_ip, data in returned_device_data.items(): + unique_id = f"{self.testing_objects['location'].name}__{data['hostname']}__{data['serial']}" + diffsync_device = self.sync_devices_adapter.get("device", unique_id) + self.assertEqual(data["device_type"], diffsync_device.device_type__model) + self.assertEqual(self.testing_objects["location"].name, diffsync_device.location__name) + self.assertEqual(data["hostname"], diffsync_device.name) + self.assertEqual(data["platform"], diffsync_device.platform__name) + self.assertEqual(device_ip, diffsync_device.primary_ip4__host) + self.assertEqual(self.testing_objects["status"].name, diffsync_device.primary_ip4__status__name) + self.assertEqual(self.testing_objects["device_role"].name, diffsync_device.role__name) + self.assertEqual(self.testing_objects["status"].name, diffsync_device.status__name) + self.assertEqual(self.testing_objects["secrets_group"].name, diffsync_device.secrets_group__name) + self.assertEqual([data["mgmt_interface"]], diffsync_device.interfaces) + self.assertEqual(data["mask_length"], diffsync_device.mask_length) + self.assertEqual(data["serial"], diffsync_device.serial) + + +class SyncDevicesNautobotAdapterTestCase(TransactionTestCase): + """Test SyncDevicesNautobotAdapter class.""" + + databases = ("default", "job_logs") + + def setUp(self): # pylint: disable=invalid-name + """Initialize test case.""" + # Setup Job + self.job = SSOTSyncDevices() + self.job.job_result = JobResult.objects.create( + name=self.job.class_path, user=None, task_name="fake task", worker="default" + ) + self.sync_devices_adapter = SyncDevicesNautobotAdapter(job=self.job, sync=None) + + # Setup Nautobot Objects + self.testing_objects = utils.sync_devices_ensure_required_nautobot_objects() + + def test_load(self): + """Test loading Nautobot data into the diffsync store.""" + + self.job.debug = True + self.job.ip_addresses = ["10.1.1.10", "10.1.1.11", "192.1.1.10"] + self.job.location = self.testing_objects["location"] + self.job.namespace = self.testing_objects["namespace"] + self.job.port = 22 + self.job.timeout = 30 + self.job.update_devices_without_primary_ip = True + self.job.device_role = self.testing_objects["device_role"] + self.job.device_status = self.testing_objects["status"] + self.job.interface_status = self.testing_objects["status"] + self.job.ip_address_status = self.testing_objects["status"] + self.job.secrets_group = self.testing_objects["secrets_group"] + self.job.platform = None + + self.sync_devices_adapter.load() + + for manufacturer in Manufacturer.objects.all(): + unique_id = manufacturer.name + diffsync_obj = self.sync_devices_adapter.get("manufacturer", unique_id) + self.assertEqual(manufacturer.name, diffsync_obj.name) + + for platform in Platform.objects.all(): + unique_id = platform.name + diffsync_obj = self.sync_devices_adapter.get("platform", unique_id) + self.assertEqual(platform.name, diffsync_obj.name) + self.assertEqual(platform.network_driver, diffsync_obj.network_driver) + self.assertEqual(platform.manufacturer.name, diffsync_obj.manufacturer__name) + + for device_type in DeviceType.objects.all(): + unique_id = f"{device_type.model}__{device_type.manufacturer.name}" + diffsync_obj = self.sync_devices_adapter.get("device_type", unique_id) + self.assertEqual(device_type.model, diffsync_obj.model) + self.assertEqual(device_type.manufacturer.name, diffsync_obj.manufacturer__name) + self.assertEqual(device_type.part_number, diffsync_obj.part_number) + + for device in Device.objects.filter(primary_ip4__host__in=self.job.ip_addresses): + unique_id = f"{device.location.name}__{device.name}__{device.serial}" + diffsync_obj = self.sync_devices_adapter.get("device", unique_id) + self.assertEqual(device.location.name, diffsync_obj.location__name) + self.assertEqual(device.name, diffsync_obj.name) + self.assertEqual(device.serial, diffsync_obj.serial) + self.assertEqual(device.primary_ip.host, diffsync_obj.primary_ip4__host) + self.assertEqual(device.primary_ip.status.name, diffsync_obj.primary_ip4__status__name) + self.assertEqual(device.platform.name, diffsync_obj.platform__name) + self.assertEqual(device.role.name, diffsync_obj.role__name) + self.assertEqual(device.secrets_group.name, diffsync_obj.secrets_group__name) + self.assertEqual(device.status.name, diffsync_obj.status__name) + self.assertEqual([device.interfaces.all().first().name], diffsync_obj.interfaces) + + with self.assertRaises(ObjectNotFound): + # Devices with a primary IP that was not entered into the job form + # should not be included in the sync + device = self.testing_objects["device_2"] + unique_id = f"{device.location.name}__{device.name}__{device.serial}" + diffsync_obj = self.sync_devices_adapter.get("device", unique_id) diff --git a/nautobot_device_onboarding/tests/test_sync_devices_models.py b/nautobot_device_onboarding/tests/test_sync_devices_models.py new file mode 100644 index 00000000..6d8aa1d5 --- /dev/null +++ b/nautobot_device_onboarding/tests/test_sync_devices_models.py @@ -0,0 +1,148 @@ +"""Test Jobs.""" + +from unittest.mock import patch + +from nautobot.apps.testing import create_job_result_and_run_job +from nautobot.core.testing import TransactionTestCase +from nautobot.dcim.models import Device, Interface +from nautobot.extras.choices import JobResultStatusChoices + +from nautobot_device_onboarding.tests import utils +from nautobot_device_onboarding.tests.fixtures import sync_devices_fixture + + +class SyncDevicesDeviceTestCase(TransactionTestCase): + """Test SyncDevicesDevice class.""" + + databases = ("default", "job_logs") + + def setUp(self): # pylint: disable=invalid-name + """Initialize test case.""" + # Setup Nautobot Objects + self.testing_objects = utils.sync_devices_ensure_required_nautobot_objects() + + @patch("nautobot_device_onboarding.diffsync.adapters.sync_devices_adapters.sync_devices_command_getter") + def test_device_update__missing_primary_ip__success(self, device_data): + """Test updating a device that does not have a primary ip with the 'Sync Devices From Network' job""" + device_data.return_value = sync_devices_fixture.sync_devices_data_update + + job_form_inputs = { + "debug": True, + "dryrun": False, + "csv_file": None, + "location": self.testing_objects["location"].pk, + "namespace": self.testing_objects["namespace"].pk, + "ip_addresses": "10.1.1.10", + "port": 22, + "timeout": 30, + "set_mgmt_only": True, + "update_devices_without_primary_ip": True, + "device_role": self.testing_objects["device_role_backup"].pk, + "device_status": self.testing_objects["status_planned"].pk, + "interface_status": self.testing_objects["status"].pk, + "ip_address_status": self.testing_objects["status"].pk, + "secrets_group": self.testing_objects["secrets_group_alternate"].pk, + "platform": None, + "memory_profiling": False, + } + self.testing_objects["device_1"].primary_ip4 = None # test existing device with missing primary ip + self.testing_objects["device_1"].validated_save() + job_result = create_job_result_and_run_job( + module="nautobot_device_onboarding.jobs", name="SSOTSyncDevices", **job_form_inputs + ) + device = Device.objects.get(serial="9ABUXU5882222") + self.assertEqual(job_result.status, JobResultStatusChoices.STATUS_SUCCESS) + self.assertEqual(device.primary_ip4.host, "10.1.1.10") + self.assertEqual(device.name, device_data.return_value["10.1.1.10"]["hostname"]) + self.assertEqual(device.serial, device_data.return_value["10.1.1.10"]["serial"]) + self.assertEqual(device.device_type.model, device_data.return_value["10.1.1.10"]["device_type"]) + self.assertEqual(device.platform.name, device_data.return_value["10.1.1.10"]["platform"]) + self.assertEqual(device.status.name, self.testing_objects["status_planned"].name) + self.assertEqual(device.role.name, self.testing_objects["device_role_backup"].name) + self.assertEqual(device.secrets_group.name, self.testing_objects["secrets_group_alternate"].name) + + mgmt_interface = Interface.objects.get( + device=device, name=device_data.return_value["10.1.1.10"]["mgmt_interface"] + ) + self.assertIn("10.1.1.10", list(mgmt_interface.ip_addresses.all().values_list("host", flat=True))) + + @patch("nautobot_device_onboarding.diffsync.adapters.sync_devices_adapters.sync_devices_command_getter") + def test_device_update__primary_ip_and_interface__success(self, device_data): + """Test updating the primary ip and interface name with the 'Sync Devices From Network' job""" + device_data.return_value = sync_devices_fixture.sync_devices_mock_data_single_device_valid + # update returned interface to force this value to be updated + device_data.return_value["10.1.1.10"]["mgmt_interface"] = "NewInterfaceName" + + job_form_inputs = { + "debug": True, + "dryrun": False, + "csv_file": None, + "location": self.testing_objects["location"].pk, + "namespace": self.testing_objects["namespace"].pk, + "ip_addresses": "10.1.1.15", + "port": 22, + "timeout": 30, + "set_mgmt_only": True, + "update_devices_without_primary_ip": True, + "device_role": self.testing_objects["device_role"].pk, + "device_status": self.testing_objects["status"].pk, + "interface_status": self.testing_objects["status"].pk, + "ip_address_status": self.testing_objects["status"].pk, + "secrets_group": self.testing_objects["secrets_group"].pk, + "platform": None, + "memory_profiling": False, + } + job_result = create_job_result_and_run_job( + module="nautobot_device_onboarding.jobs", name="SSOTSyncDevices", **job_form_inputs + ) + device = Device.objects.get(serial="test-serial-abc") + self.assertEqual(job_result.status, JobResultStatusChoices.STATUS_SUCCESS) + self.assertEqual(device.name, device_data.return_value["10.1.1.10"]["hostname"]) + self.assertEqual(device.serial, device_data.return_value["10.1.1.10"]["serial"]) + self.assertEqual(device.device_type.model, device_data.return_value["10.1.1.10"]["device_type"]) + self.assertEqual(device.platform.name, device_data.return_value["10.1.1.10"]["platform"]) + self.assertEqual(device.status.name, self.testing_objects["status"].name) + self.assertEqual(device.role.name, self.testing_objects["device_role"].name) + self.assertEqual(device.secrets_group.name, self.testing_objects["secrets_group"].name) + + mgmt_interface = Interface.objects.get( + device=device, name=device_data.return_value["10.1.1.10"]["mgmt_interface"] + ) + self.assertIn("10.1.1.10", list(mgmt_interface.ip_addresses.all().values_list("host", flat=True))) + + @patch("nautobot_device_onboarding.diffsync.adapters.sync_devices_adapters.sync_devices_command_getter") + def test_device_update__interface_only__success(self, device_data): + """Test updating only the primary ip of a device with the 'Sync Devices From Network' job""" + device_data.return_value = sync_devices_fixture.sync_devices_mock_data_single_device_alternate_valid + + job_form_inputs = { + "debug": True, + "dryrun": False, + "csv_file": None, + "location": self.testing_objects["location"].pk, + "namespace": self.testing_objects["namespace"].pk, + "ip_addresses": "192.1.1.10", + "port": 22, + "timeout": 30, + "set_mgmt_only": True, + "update_devices_without_primary_ip": True, + "device_role": self.testing_objects["device_role_backup"].pk, + "device_status": self.testing_objects["status_planned"].pk, + "interface_status": self.testing_objects["status"].pk, + "ip_address_status": self.testing_objects["status"].pk, + "secrets_group": self.testing_objects["secrets_group_alternate"].pk, + "platform": None, + "memory_profiling": False, + } + job_result = create_job_result_and_run_job( + module="nautobot_device_onboarding.jobs", name="SSOTSyncDevices", **job_form_inputs + ) + self.assertEqual(job_result.status, JobResultStatusChoices.STATUS_SUCCESS) + device = Device.objects.get(serial="test-serial-abc") + mgmt_interface = Interface.objects.get( + device=device, name=device_data.return_value["192.1.1.10"]["mgmt_interface"] + ) + self.assertIn("192.1.1.10", list(mgmt_interface.ip_addresses.all().values_list("host", flat=True))) + + old_mgmt_interface = Interface.objects.get(device=device, name="GigabitEthernet1") + self.assertNotIn("192.1.1.10", list(old_mgmt_interface.ip_addresses.all().values_list("host", flat=True))) diff --git a/nautobot_device_onboarding/tests/test_sync_network_data_adapters.py b/nautobot_device_onboarding/tests/test_sync_network_data_adapters.py new file mode 100644 index 00000000..d4f73297 --- /dev/null +++ b/nautobot_device_onboarding/tests/test_sync_network_data_adapters.py @@ -0,0 +1,375 @@ +"""Test Cisco Support adapter.""" + +from unittest.mock import MagicMock, patch + +from nautobot.core.testing import TransactionTestCase +from nautobot.dcim.models import Device, Interface +from nautobot.extras.models import JobResult +from nautobot.ipam.models import VLAN, VRF, IPAddress + +from nautobot_device_onboarding.diffsync.adapters.sync_network_data_adapters import ( + SyncNetworkDataNautobotAdapter, + SyncNetworkDataNetworkAdapter, +) +from nautobot_device_onboarding.jobs import SSOTSyncDevices +from nautobot_device_onboarding.tests import utils +from nautobot_device_onboarding.tests.fixtures import sync_network_data_fixture + + +class SyncNetworkDataNetworkAdapterTestCase(TransactionTestCase): + """Test SyncNetworkDataNetworkAdapter class.""" + + databases = ("default", "job_logs") + + def setUp(self): # pylint: disable=invalid-name + """Initialize test case.""" + # Setup Nautobot Objects + self.testing_objects = utils.sync_network_data_ensure_required_nautobot_objects() + + # Setup Job + self.job = SSOTSyncDevices() + self.job.job_result = JobResult.objects.create( + name=self.job.class_path, user=None, task_name="fake task", worker="default" + ) + self.job.command_getter_result = sync_network_data_fixture.sync_network_mock_data_valid + + # Form inputs + self.job.interface_status = self.testing_objects["status"] + self.job.ip_address_status = self.testing_objects["status"] + self.job.location = self.testing_objects["location"] + self.job.namespace = self.testing_objects["namespace"] + self.job.sync_vlans = True + self.job.sync_vrfs = True + self.job.debug = True + self.job.devices_to_load = None + + self.sync_network_data_adapter = SyncNetworkDataNetworkAdapter(job=self.job, sync=None) + + def test_handle_failed_devices(self): + """Devices that failed to returned pardsed data should be removed from results.""" + # Add a failed device to the mock returned data + self.job.command_getter_result.update(sync_network_data_fixture.failed_device) + + self.sync_network_data_adapter._handle_failed_devices( # pylint: disable=protected-access + device_data=self.job.command_getter_result + ) + self.assertNotIn("demo-cisco-xe3", self.job.command_getter_result.keys()) + + @patch("nautobot_device_onboarding.diffsync.adapters.sync_network_data_adapters.sync_network_data_command_getter") + def test_execute_command_getter(self, command_getter_result): + """Test execute command getter.""" + command_getter_result.return_value = sync_network_data_fixture.sync_network_mock_data_valid + command_getter_result.update(sync_network_data_fixture.failed_device) + self.sync_network_data_adapter.execute_command_getter() + self.assertIn( + self.testing_objects["device_1"].name, list(self.job.devices_to_load.values_list("name", flat=True)) + ) + self.assertIn( + self.testing_objects["device_2"].name, list(self.job.devices_to_load.values_list("name", flat=True)) + ) + + def test_load_devices(self): + """Test loading device data returned from command getter into the diffsync store.""" + self.sync_network_data_adapter.load_devices() + + # test loaded devices + for hostname, device_data in self.job.command_getter_result.items(): + unique_id = f"{hostname}__{device_data['serial']}" + diffsync_obj = self.sync_network_data_adapter.get("device", unique_id) + self.assertEqual(hostname, diffsync_obj.name) + self.assertEqual(device_data["serial"], diffsync_obj.serial) + + # test child interfaces which are loaded along with devices + for hostname, device_data in self.job.command_getter_result.items(): + for interface_name, interface_data in device_data["interfaces"].items(): + unique_id = f"{hostname}__{interface_name}" + diffsync_obj = self.sync_network_data_adapter.get("interface", unique_id) + self.assertEqual(hostname, diffsync_obj.device__name) + self.assertEqual(interface_name, diffsync_obj.name) + self.assertEqual(self.testing_objects["status"].name, diffsync_obj.status__name) + self.assertEqual( + self.sync_network_data_adapter._process_mac_address( # pylint: disable=protected-access + mac_address=interface_data["mac_address"] + ), + diffsync_obj.mac_address, + ) + self.assertEqual(interface_data["802.1Q_mode"], diffsync_obj.mode) + self.assertEqual(interface_data["link_status"], diffsync_obj.enabled) + self.assertEqual(interface_data["description"], diffsync_obj.description) + + def test_load_ip_addresses(self): + """Test loading ip address data returned from command getter into the diffsync store.""" + self.sync_network_data_adapter.load_ip_addresses() + + for _, device_data in self.job.command_getter_result.items(): + for _, interface_data in device_data["interfaces"].items(): + if interface_data["ip_addresses"]: + for ip_address in interface_data["ip_addresses"]: + if ip_address["ip_address"]: + unique_id = ip_address["ip_address"] + diffsync_obj = self.sync_network_data_adapter.get("ip_address", unique_id) + self.assertEqual(ip_address["ip_address"], diffsync_obj.host) + self.assertEqual(4, diffsync_obj.ip_version) + self.assertEqual(int(ip_address["prefix_length"]), diffsync_obj.mask_length) + self.assertEqual(self.job.ip_address_status.name, diffsync_obj.status__name) + + def test_load_vlans(self): + """Test loading vlan data returned from command getter into the diffsync store.""" + self.job.devices_to_load = Device.objects.filter(name__in=["demo-cisco-1", "demo-cisco-2"]) + self.sync_network_data_adapter.load_vlans() + + for _, device_data in self.job.command_getter_result.items(): + for _, interface_data in device_data["interfaces"].items(): + for tagged_vlan in interface_data["tagged_vlans"]: + unique_id = f"{tagged_vlan['id']}__{tagged_vlan['name']}__{self.job.location.name}" + diffsync_obj = self.sync_network_data_adapter.get("vlan", unique_id) + self.assertEqual(int(tagged_vlan["id"]), diffsync_obj.vid) + self.assertEqual(tagged_vlan["name"], diffsync_obj.name) + self.assertEqual(self.job.location.name, diffsync_obj.location__name) + if interface_data["untagged_vlan"]: + unique_id = f"{interface_data['untagged_vlan']['id']}__{interface_data['untagged_vlan']['name']}__{self.job.location.name}" + diffsync_obj = self.sync_network_data_adapter.get("vlan", unique_id) + self.assertEqual(int(interface_data["untagged_vlan"]["id"]), diffsync_obj.vid) + self.assertEqual(interface_data["untagged_vlan"]["name"], diffsync_obj.name) + self.assertEqual(self.job.location.name, diffsync_obj.location__name) + + def test_load_vrfs(self): + """Test loading vrf data returned from command getter into the diffsync store.""" + self.sync_network_data_adapter.load_vrfs() + for _, device_data in self.job.command_getter_result.items(): + for _, interface_data in device_data["interfaces"].items(): + if interface_data["vrf"]: + unique_id = f"{interface_data['vrf']['name']}__{self.job.namespace.name}" + diffsync_obj = self.sync_network_data_adapter.get("vrf", unique_id) + self.assertEqual(interface_data["vrf"]["name"], diffsync_obj.name) + self.assertEqual(self.job.namespace.name, diffsync_obj.namespace__name) + + def test_load_ip_address_to_interfaces(self): + """Test loading ip address interface assignments into the Diffsync store.""" + self.sync_network_data_adapter.load_ip_address_to_interfaces() + for hostname, device_data in self.job.command_getter_result.items(): + for interface_name, interface_data in device_data["interfaces"].items(): + for ip_address in interface_data["ip_addresses"]: + if ip_address["ip_address"]: + unique_id = f"{hostname}__{interface_name}__{ip_address['ip_address']}" + diffsync_obj = self.sync_network_data_adapter.get("ipaddress_to_interface", unique_id) + self.assertEqual(hostname, diffsync_obj.interface__device__name) + self.assertEqual(interface_name, diffsync_obj.interface__name) + self.assertEqual(ip_address["ip_address"], diffsync_obj.ip_address__host) + + def test_load_tagged_vlans_to_interface(self): + """Test loading tagged vlan interface assignments into the Diffsync store.""" + self.sync_network_data_adapter.load_tagged_vlans_to_interface() + for hostname, device_data in self.job.command_getter_result.items(): + for interface_name, interface_data in device_data["interfaces"].items(): + unique_id = f"{hostname}__{interface_name}" + diffsync_obj = self.sync_network_data_adapter.get("tagged_vlans_to_interface", unique_id) + self.assertEqual(hostname, diffsync_obj.device__name) + self.assertEqual(interface_name, diffsync_obj.name) + self.assertEqual(interface_data["tagged_vlans"], diffsync_obj.tagged_vlans) + + def test_load_untagged_vlan_to_interface(self): + """Test loading untagged vlan interface assignments into the Diffsync store.""" + self.sync_network_data_adapter.load_untagged_vlan_to_interface() + for hostname, device_data in self.job.command_getter_result.items(): + for interface_name, interface_data in device_data["interfaces"].items(): + unique_id = f"{hostname}__{interface_name}" + diffsync_obj = self.sync_network_data_adapter.get("untagged_vlan_to_interface", unique_id) + self.assertEqual(hostname, diffsync_obj.device__name) + self.assertEqual(interface_name, diffsync_obj.name) + if interface_data["untagged_vlan"]: + self.assertEqual(interface_data["untagged_vlan"], diffsync_obj.untagged_vlan) + else: + self.assertEqual({}, diffsync_obj.untagged_vlan) + + def test_load_lag_to_interface(self): + """Test loading lag interface assignments into the Diffsync store.""" + self.sync_network_data_adapter.load_lag_to_interface() + for hostname, device_data in self.job.command_getter_result.items(): + for interface_name, interface_data in device_data["interfaces"].items(): + unique_id = f"{hostname}__{interface_name}" + diffsync_obj = self.sync_network_data_adapter.get("lag_to_interface", unique_id) + self.assertEqual(hostname, diffsync_obj.device__name) + self.assertEqual(interface_name, diffsync_obj.name) + self.assertEqual(interface_data["lag"], diffsync_obj.lag__interface__name) + + def test_load_vrf_to_interface(self): + """Test loading vrf interface assignments into the Diffsync store.""" + self.sync_network_data_adapter.load_vrf_to_interface() + for hostname, device_data in self.job.command_getter_result.items(): + for interface_name, interface_data in device_data["interfaces"].items(): + unique_id = f"{hostname}__{interface_name}" + diffsync_obj = self.sync_network_data_adapter.get("vrf_to_interface", unique_id) + self.assertEqual(hostname, diffsync_obj.device__name) + self.assertEqual(interface_name, diffsync_obj.name) + self.assertEqual(interface_data["vrf"], diffsync_obj.vrf) + + def test_load_cables(self): + """Test loading cable data returned from command getter into the diffsync store.""" + self.sync_network_data_adapter.load_cables() + for hostname, device_data in self.job.command_getter_result.items(): + for cable in device_data["cables"]: + if hostname < cable["remote_device"]: + termination_a_device = hostname + termination_a_interface = cable["local_interface"] + termination_b_device = cable["remote_device"] + termination_b_interface = cable["remote_interface"] + else: + termination_a_device = cable["remote_device"] + termination_a_interface = cable["remote_interface"] + termination_b_device = hostname + termination_b_interface = cable["local_interface"] + unique_id = f"dcim__interface__{termination_a_device}__{termination_a_interface}__dcim__interface__{termination_b_device}__{termination_b_interface}" + diffsync_obj = self.sync_network_data_adapter.get("cable", unique_id) + self.assertEqual(termination_a_device, diffsync_obj.termination_a__device__name) + self.assertEqual(termination_a_interface, diffsync_obj.termination_a__name) + self.assertEqual(termination_b_device, diffsync_obj.termination_b__device__name) + self.assertEqual(termination_b_interface, diffsync_obj.termination_b__name) + + +class SyncNetworkDataNautobotAdapterTestCase(TransactionTestCase): + """Test SyncNetworkDataNautobotAdapter class.""" + + databases = ("default", "job_logs") + + def setUp(self): # pylint: disable=invalid-name + """Initialize test case.""" + # Setup Nautobot Objects + self.testing_objects = utils.sync_network_data_ensure_required_nautobot_objects() + + # Setup Job + self.job = SSOTSyncDevices() + self.job.job_result = JobResult.objects.create( + name=self.job.class_path, user=None, task_name="fake task", worker="default" + ) + self.job.command_getter_result = sync_network_data_fixture.sync_network_mock_data_valid + + # Form inputs + self.job.interface_status = self.testing_objects["status"] + self.job.ip_address_status = self.testing_objects["status"] + self.job.location = self.testing_objects["location"] + self.job.namespace = self.testing_objects["namespace"] + self.job.sync_vlans = True + self.job.sync_vrfs = True + self.job.debug = True + self.job.devices_to_load = Device.objects.filter(name__in=["demo-cisco-1", "demo-cisco-2"]) + + self.sync_network_data_adapter = SyncNetworkDataNautobotAdapter(job=self.job, sync=None) + + def test_cache_primary_ips(self): + """Test IP Cache.""" + self.sync_network_data_adapter._cache_primary_ips( # pylint: disable=protected-access + device_queryset=self.job.devices_to_load + ) + for device in self.job.devices_to_load: + self.assertEqual(self.sync_network_data_adapter.primary_ips[device.id], device.primary_ip.id) + + def test_load_param_mac_address(self): + """Test MAC address string converstion.""" + database_obj = MagicMock() + database_obj.mac_address = "0000.0000.0000" + mac_address = self.sync_network_data_adapter.load_param_mac_address( + parameter_name="mac_address", database_object=database_obj + ) + self.assertEqual(str, type(mac_address)) + + def test_load_ip_addresses(self): + """Test loading Nautobot ip into the diffsync store.""" + ip_address_hosts = self.sync_network_data_adapter.load_ip_addresses() + for ip_address in IPAddress.objects.filter( + host__in=ip_address_hosts, + parent__namespace__name=self.job.namespace.name, + ): + unique_id = f"{ip_address.host}" + diffsync_obj = self.sync_network_data_adapter.get("ip_address", unique_id) + self.assertEqual(ip_address.host, diffsync_obj.host) + self.assertEqual(ip_address.ip_version, diffsync_obj.ip_version) + self.assertEqual(ip_address.mask_length, diffsync_obj.mask_length) + self.assertEqual(self.job.ip_address_status.name, diffsync_obj.status__name) + + def test_load_vlans(self): + """Test loading Nautobot vlan data into the diffsync store.""" + self.sync_network_data_adapter.load_vlans() + + for vlan in VLAN.objects.all(): + unique_id = f"{vlan.vid}__{vlan.name}__{self.job.location.name}" + diffsync_obj = self.sync_network_data_adapter.get("vlan", unique_id) + self.assertEqual(int(vlan.vid), diffsync_obj.vid) + self.assertEqual(vlan.name, diffsync_obj.name) + self.assertEqual(self.job.location.name, diffsync_obj.location__name) + + def test_load_tagged_vlans_to_interface(self): + """Test loading Nautobot tagged vlan interface assignments into the Diffsync store.""" + self.sync_network_data_adapter.load_tagged_vlans_to_interface() + for interface in Interface.objects.filter(device__in=self.job.devices_to_load): + tagged_vlans = [] + for vlan in interface.tagged_vlans.all(): + vlan_dict = {} + vlan_dict["name"] = vlan.name + vlan_dict["id"] = str(vlan.vid) + tagged_vlans.append(vlan_dict) + + unique_id = f"{interface.device.name}__{interface.name}" + diffsync_obj = self.sync_network_data_adapter.get("tagged_vlans_to_interface", unique_id) + self.assertEqual(interface.device.name, diffsync_obj.device__name) + self.assertEqual(interface.name, diffsync_obj.name) + self.assertEqual(tagged_vlans, diffsync_obj.tagged_vlans) + + def load_untagged_vlan_to_interface(self): + """Test loading Nautobot untagged vlan interface assignments into the Diffsync store.""" + self.sync_network_data_adapter.load_untagged_vlan_to_interface() + for interface in Interface.objects.filter(device__in=self.job.devices_to_load): + untagged_vlan = {} + if interface.untagged_vlan: + untagged_vlan["name"] = interface.untagged_vlan.name + untagged_vlan["id"] = str(interface.untagged_vlan.vid) + + unique_id = f"{interface.device.name}__{interface.name}" + diffsync_obj = self.sync_network_data_adapter.get("untagged_vlans_to_interface", unique_id) + self.assertEqual(interface.device.name, diffsync_obj.device__name) + self.assertEqual(interface.name, diffsync_obj.name) + self.assertEqual(untagged_vlan, diffsync_obj.tagged_vlan) + + def test_load_lag_to_interface(self): + """Test loading Nautobot lag interface assignments into the Diffsync store.""" + self.sync_network_data_adapter.load_lag_to_interface() + for interface in Interface.objects.filter(device__in=self.job.devices_to_load): + unique_id = f"{interface.device.name}__{interface.name}" + diffsync_obj = self.sync_network_data_adapter.get("lag_to_interface", unique_id) + self.assertEqual(interface.device.name, diffsync_obj.device__name) + self.assertEqual(interface.name, diffsync_obj.name) + self.assertEqual(interface.lag.name if interface.lag else "", diffsync_obj.lag__interface__name) + + def test_load_vrfs(self): + """Test loading Nautobot vrf data into the diffsync store.""" + self.sync_network_data_adapter.load_vrfs() + for vrf in VRF.objects.all(): + unique_id = f"{vrf.name}__{self.job.namespace.name}" + diffsync_obj = self.sync_network_data_adapter.get("vrf", unique_id) + self.assertEqual(vrf.name, diffsync_obj.name) + self.assertEqual(self.job.namespace.name, diffsync_obj.namespace__name) + + def test_load_vrf_to_interface(self): + """Test loading Nautobot vrf interface assignments into the Diffsync store.""" + self.sync_network_data_adapter.load_vrf_to_interface() + for interface in Interface.objects.filter(device__in=self.job.devices_to_load): + vrf = {} + if interface.vrf: + vrf["name"] = interface.vrf.name + unique_id = f"{interface.device.name}__{interface.name}" + diffsync_obj = self.sync_network_data_adapter.get("vrf_to_interface", unique_id) + self.assertEqual(interface.device.name, diffsync_obj.device__name) + self.assertEqual(interface.name, diffsync_obj.name) + self.assertEqual(vrf, diffsync_obj.vrf) + + def test_sync_complete(self): + """Test primary ip re-assignment if deleted during the sync.""" + self.sync_network_data_adapter._cache_primary_ips( # pylint: disable=protected-access + device_queryset=self.job.devices_to_load + ) + for device in self.job.devices_to_load: + device.primary_ip4 = None + device.validated_save() + self.sync_network_data_adapter.sync_complete(source=None, diff=None) + for device in self.job.devices_to_load.all(): + self.assertEqual(self.sync_network_data_adapter.primary_ips[device.id], device.primary_ip.id) diff --git a/nautobot_device_onboarding/tests/test_transform.py b/nautobot_device_onboarding/tests/test_transform.py new file mode 100755 index 00000000..2cc0dbaf --- /dev/null +++ b/nautobot_device_onboarding/tests/test_transform.py @@ -0,0 +1,109 @@ +"""Testing the transform helpers.""" + +import os +import tempfile +import unittest +from unittest import mock + +import yaml +from nautobot.core.jobs import GitRepositorySync +from nautobot.core.testing import TransactionTestCase, run_job_for_testing +from nautobot.extras.choices import JobResultStatusChoices +from nautobot.extras.models import GitRepository, JobResult + +from nautobot_device_onboarding.nornir_plays.transform import add_platform_parsing_info, load_command_mappers_from_dir + +MOCK_DIR = os.path.join("nautobot_device_onboarding", "tests", "mock") + + +class TestTransformNoGitRepo(unittest.TestCase): + """Testing the transform helpers with no git repo overloads.""" + + def setUp(self): + self.yaml_file_dir = f"{MOCK_DIR}/command_mappers/" + + def test_add_platform_parsing_info_sane_defaults(self): + command_mappers = add_platform_parsing_info() + default_mappers = ["cisco_ios", "arista_eos", "cisco_wlc", "cisco_xe", "juniper_junos", "cisco_nxos"] + self.assertEqual(sorted(default_mappers), list(sorted(command_mappers.keys()))) + + def test_load_command_mappers_from_dir(self): + command_mappers = load_command_mappers_from_dir(self.yaml_file_dir) + self.assertEqual(["mock_cisco_ios"], list(command_mappers.keys())) + + +@mock.patch("nautobot.extras.datasources.git.GitRepo") +class TestTransformWithGitRepo(TransactionTestCase): + """Testing the transform helpers with git repo overloads.""" + + databases = ("default", "job_logs") + COMMIT_HEXSHA = "88dd9cd78df89e887ee90a1d209a3e9a04e8c841" + + def setUp(self): + super().setUp() + self.yaml_file_dir = f"{MOCK_DIR}/command_mappers/" + self.repo_slug = "test_git_repo" + self.repo = GitRepository( + name="Test Git Repository", + slug=self.repo_slug, + remote_url="http://localhost/git.git", + provided_contents=["nautobot_device_onboarding.onboarding_command_mappers"], + ) + self.repo.save() + self.job_result = JobResult.objects.create(name=self.repo.name) + return mock.DEFAULT + + def populate_repo(self, path, url, *args, **kwargs): + """Simple helper to populate a mock repo with some data.""" + os.makedirs(path, exist_ok=True) + os.makedirs(os.path.join(path, "onboarding_command_mappers"), exist_ok=True) + with open(os.path.join(path, "onboarding_command_mappers", "foo_bar.yml"), "w", encoding="utf-8") as fd: + yaml.dump( + { + "sync_devices": { + "serial": { + "commands": [{"command": "show version", "parser": "textfsm", "jpath": "[*].serial"}] + } + } + }, + fd, + ) + return mock.DEFAULT + + def test_git_repo_was_created(self, MockGitRepo): # pylint:disable=invalid-name + repo_count = GitRepository.objects.filter( + provided_contents=["nautobot_device_onboarding.onboarding_command_mappers"] + ).count() + self.assertEqual(1, repo_count) + + @mock.patch("nautobot_device_onboarding.nornir_plays.transform.load_command_mappers_from_dir") + def test_pull_git_repository_and_refresh_data_with_valid_data( + self, mock_load_command_mappers, MockGitRepo + ): # pylint:disable=invalid-name + """ + The test_pull_git_repository_and_refresh_data job should succeed if valid data is present in the repo. + """ + with tempfile.TemporaryDirectory() as tempdir: + with self.settings(GIT_ROOT=tempdir): + MockGitRepo.side_effect = self.populate_repo + MockGitRepo.return_value.checkout.return_value = (self.COMMIT_HEXSHA, True) + + # Run the Git operation and refresh the object from the DB + job_model = GitRepositorySync().job_model + job_result = run_job_for_testing(job=job_model, repository=self.repo.pk) + job_result.refresh_from_db() + self.assertEqual( + job_result.status, + JobResultStatusChoices.STATUS_SUCCESS, + (job_result.traceback, list(job_result.job_log_entries.values_list("message", flat=True))), + ) + mock_load_command_mappers.side_effect = [ + {"foo_bar": {"sync_devices": "serial"}}, + {"cisco_ios": {"sync_devices": "serial-2"}}, + ] + expected_dict = { + "foo_bar": {"sync_devices": "serial"}, + "cisco_ios": {"sync_devices": "serial-2"}, + } + merged_mappers = add_platform_parsing_info() + self.assertEqual(expected_dict, merged_mappers) diff --git a/nautobot_device_onboarding/tests/utils.py b/nautobot_device_onboarding/tests/utils.py new file mode 100644 index 00000000..2733d973 --- /dev/null +++ b/nautobot_device_onboarding/tests/utils.py @@ -0,0 +1,363 @@ +"""Testing utilites.""" + +from django.contrib.contenttypes.models import ContentType +from nautobot.dcim.choices import InterfaceModeChoices, InterfaceTypeChoices +from nautobot.dcim.models import Cable, Device, DeviceType, Interface, Location, LocationType, Manufacturer, Platform +from nautobot.extras.choices import SecretsGroupAccessTypeChoices, SecretsGroupSecretTypeChoices +from nautobot.extras.models import Role, Secret, SecretsGroup, SecretsGroupAssociation, Status +from nautobot.ipam.choices import IPAddressTypeChoices, PrefixTypeChoices +from nautobot.ipam.models import VLAN, VRF, IPAddress, IPAddressToInterface, Namespace, Prefix + + +def sync_network_data_ensure_required_nautobot_objects(): + """Ensure the required Nautobot objects needed for testing Sync Data from Network exist.""" + testing_objects = {} + + status, _ = Status.objects.get_or_create(name="Active") + status.content_types.add(ContentType.objects.get_for_model(Device)) + status.content_types.add(ContentType.objects.get_for_model(Prefix)) + status.content_types.add(ContentType.objects.get_for_model(IPAddress)) + status.content_types.add(ContentType.objects.get_for_model(Location)) + status.content_types.add(ContentType.objects.get_for_model(Interface)) + status.content_types.add(ContentType.objects.get_for_model(Interface)) + status.content_types.add(ContentType.objects.get_for_model(VLAN)) + status.content_types.add(ContentType.objects.get_for_model(VRF)) + status.content_types.add(ContentType.objects.get_for_model(Cable)) + status.validated_save() + + username_secret, _ = Secret.objects.get_or_create( + name="username", provider="environment-variable", parameters={"variable": "DEVICE_USER"} + ) + password_secret, _ = Secret.objects.get_or_create( + name="password", provider="environment-variable", parameters={"variable": "DEVICE_PASS"} + ) + secrets_group, _ = SecretsGroup.objects.get_or_create(name="test secrets group") + SecretsGroupAssociation.objects.get_or_create( + secrets_group=secrets_group, + secret=username_secret, + access_type=SecretsGroupAccessTypeChoices.TYPE_GENERIC, + secret_type=SecretsGroupSecretTypeChoices.TYPE_USERNAME, + ) + SecretsGroupAssociation.objects.get_or_create( + secrets_group=secrets_group, + secret=password_secret, + access_type=SecretsGroupAccessTypeChoices.TYPE_GENERIC, + secret_type=SecretsGroupSecretTypeChoices.TYPE_PASSWORD, + ) + + namespace, _ = Namespace.objects.get_or_create(name="Global") + + prefix, _ = Prefix.objects.get_or_create( + prefix="10.1.1.0/24", + namespace=namespace, + type=PrefixTypeChoices.TYPE_NETWORK, + status=status, + ) + ip_address_1, _ = IPAddress.objects.get_or_create( + host="10.1.1.10", mask_length=24, type=IPAddressTypeChoices.TYPE_HOST, status=status + ) + ip_address_2, _ = IPAddress.objects.get_or_create( + host="10.1.1.11", mask_length=24, type=IPAddressTypeChoices.TYPE_HOST, status=status + ) + ip_address_3, _ = IPAddress.objects.get_or_create( + host="10.1.1.15", mask_length=24, type=IPAddressTypeChoices.TYPE_HOST, status=status + ) + location_type, _ = LocationType.objects.get_or_create(name="Site") + location_type.content_types.add(ContentType.objects.get_for_model(Device)) + location_type.content_types.add(ContentType.objects.get_for_model(VLAN)) + location_type.validated_save() + location, _ = Location.objects.get_or_create(name="Site A", location_type=location_type, status=status) + + device_role, _ = Role.objects.get_or_create(name="Network") + device_role.content_types.add(ContentType.objects.get_for_model(Device)) + device_role.validated_save() + + manufacturer, _ = Manufacturer.objects.get_or_create(name="Cisco") + + platform_1, _ = Platform.objects.get_or_create( + name="cisco_ios", network_driver="cisco_ios", manufacturer=manufacturer + ) + platform_2, _ = Platform.objects.get_or_create( + name="cisco_xe", network_driver="cisco_xe", manufacturer=manufacturer + ) + + vlan_1, _ = VLAN.objects.get_or_create(vid=40, name="vlan40", location=location, status=status) + vlan_2, _ = VLAN.objects.get_or_create(vid=50, name="vlan50", location=location, status=status) + vrf_1, _ = VRF.objects.get_or_create(name="mgmt", namespace=namespace) + vrf_2, _ = VRF.objects.get_or_create(name="vrf2", namespace=namespace) + + device_type, _ = DeviceType.objects.get_or_create(model="CSR1000V17", manufacturer=manufacturer) + device_1, _ = Device.objects.get_or_create( + name="demo-cisco-1", + serial="9ABUXU581111", + device_type=device_type, + status=status, + location=location, + role=device_role, + platform=platform_1, + secrets_group=secrets_group, + ) + device_2, _ = Device.objects.get_or_create( + name="demo-cisco-2", + serial="9ABUXU5882222", + device_type=device_type, + status=status, + location=location, + role=device_role, + platform=platform_2, + secrets_group=secrets_group, + ) + device_3, _ = Device.objects.get_or_create( + name="demo-cisco-3", + serial="9ABUXU5883333", + device_type=device_type, + status=status, + location=location, + role=device_role, + platform=platform_2, + secrets_group=secrets_group, + ) + interface_1, _ = Interface.objects.get_or_create( + device=device_1, name="GigabitEthernet1", status=status, type=InterfaceTypeChoices.TYPE_VIRTUAL + ) + interface_1.mode = InterfaceModeChoices.MODE_TAGGED + interface_1.tagged_vlans.add(vlan_1) + interface_1.validated_save() + interface_2, _ = Interface.objects.get_or_create( + device=device_2, name="GigabitEthernet1", status=status, type=InterfaceTypeChoices.TYPE_VIRTUAL + ) + interface_3, _ = Interface.objects.get_or_create( + device=device_3, name="GigabitEthernet1", status=status, type=InterfaceTypeChoices.TYPE_VIRTUAL + ) + IPAddressToInterface.objects.get_or_create(interface=interface_1, ip_address=ip_address_1) + device_1.primary_ip4 = ip_address_1 + device_1.validated_save() + + IPAddressToInterface.objects.get_or_create(interface=interface_2, ip_address=ip_address_2) + device_2.primary_ip4 = ip_address_2 + device_2.validated_save() + + IPAddressToInterface.objects.get_or_create(interface=interface_3, ip_address=ip_address_3) + device_3.primary_ip4 = ip_address_3 + device_3.validated_save() + + testing_objects["status"] = status + testing_objects["secrets_group"] = secrets_group + testing_objects["namespace"] = namespace + testing_objects["location"] = location + testing_objects["manufacturer"] = manufacturer + testing_objects["device_role"] = device_role + testing_objects["device_type"] = device_type + testing_objects["platform_1"] = platform_1 + testing_objects["platform_2"] = platform_2 + testing_objects["prefix"] = prefix + testing_objects["ip_address_1"] = ip_address_1 + testing_objects["ip_address_2"] = ip_address_2 + testing_objects["ip_address_3"] = ip_address_3 + testing_objects["device_1"] = device_1 + testing_objects["device_2"] = device_2 + testing_objects["device_3"] = device_3 + testing_objects["vlan_1"] = vlan_1 + testing_objects["vlan_2"] = vlan_2 + testing_objects["vrf_1"] = vrf_1 + testing_objects["vrf_2"] = vrf_2 + + return testing_objects + + +def sync_devices_ensure_required_nautobot_objects(): + """Ensure the required Nautobot objects needed for Sync Device from Network testing exist.""" + testing_objects = {} + + status, _ = Status.objects.get_or_create(name="Active") + status.content_types.add(ContentType.objects.get_for_model(Device)) + status.content_types.add(ContentType.objects.get_for_model(Prefix)) + status.content_types.add(ContentType.objects.get_for_model(IPAddress)) + status.content_types.add(ContentType.objects.get_for_model(Location)) + status.content_types.add(ContentType.objects.get_for_model(Interface)) + status.content_types.add(ContentType.objects.get_for_model(Interface)) + status.validated_save() + + status_planned, _ = Status.objects.get_or_create(name="Planned") + status_planned.content_types.add(ContentType.objects.get_for_model(Device)) + status_planned.validated_save() + + username_secret, _ = Secret.objects.get_or_create( + name="username", provider="environment-variable", parameters={"variable": "DEVICE_USER"} + ) + password_secret, _ = Secret.objects.get_or_create( + name="password", provider="environment-variable", parameters={"variable": "DEVICE_PASS"} + ) + secrets_group, _ = SecretsGroup.objects.get_or_create(name="test secrets group") + secrets_group_alternate, _ = SecretsGroup.objects.get_or_create(name="alternate secrets group") + + secrets_group, _ = SecretsGroup.objects.get_or_create(name="test secrets group") + SecretsGroupAssociation.objects.get_or_create( + secrets_group=secrets_group, + secret=username_secret, + access_type=SecretsGroupAccessTypeChoices.TYPE_GENERIC, + secret_type=SecretsGroupSecretTypeChoices.TYPE_USERNAME, + ) + SecretsGroupAssociation.objects.get_or_create( + secrets_group=secrets_group, + secret=password_secret, + access_type=SecretsGroupAccessTypeChoices.TYPE_GENERIC, + secret_type=SecretsGroupSecretTypeChoices.TYPE_PASSWORD, + ) + + namespace, _ = Namespace.objects.get_or_create(name="Global") + + prefix, _ = Prefix.objects.get_or_create( + prefix="192.1.1.0/24", + namespace=namespace, + type=PrefixTypeChoices.TYPE_NETWORK, + status=status, + ) + ip_address_1, _ = IPAddress.objects.get_or_create( + host="192.1.1.10", mask_length=24, type=IPAddressTypeChoices.TYPE_HOST, status=status + ) + ip_address_2, _ = IPAddress.objects.get_or_create( + host="192.1.1.11", mask_length=24, type=IPAddressTypeChoices.TYPE_HOST, status=status + ) + + location_type, _ = LocationType.objects.get_or_create(name="Site") + location_type.content_types.add(ContentType.objects.get_for_model(Device)) + location_type.validated_save() + location, _ = Location.objects.get_or_create(name="Site A", location_type=location_type, status=status) + + device_role, _ = Role.objects.get_or_create(name="Network") + device_role.content_types.add(ContentType.objects.get_for_model(Device)) + device_role.validated_save() + + device_role_backup, _ = Role.objects.get_or_create(name="Backup") + device_role_backup.content_types.add(ContentType.objects.get_for_model(Device)) + device_role_backup.validated_save() + + manufacturer, _ = Manufacturer.objects.get_or_create(name="Cisco") + + platform, _ = Platform.objects.get_or_create( + name="cisco_nxos", network_driver="cisco_nxos", manufacturer=manufacturer + ) + + device_type, _ = DeviceType.objects.get_or_create( + model="CSR1000V17", part_number="CSR1000V17", manufacturer=manufacturer + ) + device_1, _ = Device.objects.get_or_create( + name="test device 1", + serial="test-serial-abc", + device_type=device_type, + status=status, + location=location, + role=device_role, + platform=platform, + secrets_group=secrets_group, + ) + device_2, _ = Device.objects.get_or_create( + name="test device 2", + serial="test-serial-123", + device_type=device_type, + status=status, + location=location, + role=device_role, + platform=platform, + secrets_group=secrets_group, + ) + interface_1, _ = Interface.objects.get_or_create( + device=device_1, name="GigabitEthernet1", status=status, type=InterfaceTypeChoices.TYPE_VIRTUAL + ) + IPAddressToInterface.objects.get_or_create(interface=interface_1, ip_address=ip_address_1) + device_1.primary_ip4 = ip_address_1 + device_1.validated_save() + + interface_2, _ = Interface.objects.get_or_create( + device=device_2, name="GigabitEthernet1", status=status, type=InterfaceTypeChoices.TYPE_VIRTUAL + ) + IPAddressToInterface.objects.get_or_create(interface=interface_2, ip_address=ip_address_2) + device_2.primary_ip4 = ip_address_2 + device_2.validated_save() + + testing_objects["status"] = status + testing_objects["status_planned"] = status_planned + testing_objects["secrets_group"] = secrets_group + testing_objects["secrets_group_alternate"] = secrets_group_alternate + testing_objects["namespace"] = namespace + testing_objects["location"] = location + testing_objects["manufacturer"] = manufacturer + testing_objects["device_role"] = device_role + testing_objects["device_role_backup"] = device_role_backup + testing_objects["device_type"] = device_type + testing_objects["platform"] = platform + testing_objects["prefix"] = prefix + testing_objects["ip_address_1"] = ip_address_1 + testing_objects["ip_address_2"] = ip_address_2 + testing_objects["device_1"] = device_1 + testing_objects["device_2"] = device_2 + + return testing_objects + + +def sync_devices_ensure_required_nautobot_objects__jobs_testing(): + """Ensure the required Nautobot objects needed for testing exist.""" + testing_objects = {} + + status, _ = Status.objects.get_or_create(name="Active") + status.content_types.add(ContentType.objects.get_for_model(Device)) + status.content_types.add(ContentType.objects.get_for_model(Prefix)) + status.content_types.add(ContentType.objects.get_for_model(IPAddress)) + status.content_types.add(ContentType.objects.get_for_model(Location)) + status.content_types.add(ContentType.objects.get_for_model(Interface)) + status.content_types.add(ContentType.objects.get_for_model(Interface)) + status.validated_save() + + username_secret, _ = Secret.objects.get_or_create( + name="username", provider="environment-variable", parameters={"variable": "DEVICE_USER"} + ) + password_secret, _ = Secret.objects.get_or_create( + name="password", provider="environment-variable", parameters={"variable": "DEVICE_PASS"} + ) + secrets_group, _ = SecretsGroup.objects.get_or_create(name="test secrets group") + SecretsGroupAssociation.objects.get_or_create( + secrets_group=secrets_group, + secret=username_secret, + access_type=SecretsGroupAccessTypeChoices.TYPE_GENERIC, + secret_type=SecretsGroupSecretTypeChoices.TYPE_USERNAME, + ) + SecretsGroupAssociation.objects.get_or_create( + secrets_group=secrets_group, + secret=password_secret, + access_type=SecretsGroupAccessTypeChoices.TYPE_GENERIC, + secret_type=SecretsGroupSecretTypeChoices.TYPE_PASSWORD, + ) + + namespace, _ = Namespace.objects.get_or_create(name="Global") + + location_type__parent, _ = LocationType.objects.get_or_create(name="Region") + location_type, _ = LocationType.objects.get_or_create(name="Site") + location_type.content_types.add(ContentType.objects.get_for_model(Device)) + location_type.validated_save() + + location_1_parent, _ = Location.objects.get_or_create( + name="Site A Parent", location_type=location_type__parent, status=status + ) + location_1, _ = Location.objects.get_or_create( + name="Site A", parent=location_1_parent, location_type=location_type, status=status + ) + location_2_parent, _ = Location.objects.get_or_create( + name="Site B Parent", location_type=location_type__parent, status=status + ) + location_2, _ = Location.objects.get_or_create( + name="Site B", parent=location_2_parent, location_type=location_type, status=status + ) + + device_role, _ = Role.objects.get_or_create(name="Network") + device_role.content_types.add(ContentType.objects.get_for_model(Device)) + device_role.validated_save() + + testing_objects["status"] = status + testing_objects["secrets_group"] = secrets_group + testing_objects["namespace"] = namespace + testing_objects["location_1"] = location_1 + testing_objects["location_2"] = location_2 + testing_objects["device_role"] = device_role + + return testing_objects diff --git a/nautobot_device_onboarding/utils/diffsync_utils.py b/nautobot_device_onboarding/utils/diffsync_utils.py new file mode 100644 index 00000000..8e32c71f --- /dev/null +++ b/nautobot_device_onboarding/utils/diffsync_utils.py @@ -0,0 +1,112 @@ +"""Utility functions for use with diffsync.""" + +import ipaddress + +from django.core.exceptions import ObjectDoesNotExist, ValidationError +from nautobot.apps.choices import PrefixTypeChoices +from nautobot.dcim.models import Device +from nautobot.ipam.models import IPAddress, Prefix + + +def generate_device_queryset_from_command_getter_result(job, command_getter_result): + """Generate a Nautobot device queryset based on data returned from Command Getter Nornir Task.""" + devices_to_sync_hostnames = [] + devices_to_sync_serial_numbers = [] + devices_with_errors = [] + for hostname, device_data in command_getter_result.items(): + try: + devices_to_sync_hostnames.append(hostname) + devices_to_sync_serial_numbers.append(device_data["serial"]) + except Exception as err: + devices_with_errors.append(hostname) + job.logger.error(f"Error while creating device queryset, hostname: {hostname}, {type(err).__name__} {err}") + if job.debug: + job.logger.debug(f"{hostname}: {device_data}") + continue + device_queryset = Device.objects.filter(name__in=devices_to_sync_hostnames).filter( + serial__in=devices_to_sync_serial_numbers + ) + return device_queryset, devices_with_errors + + +def check_data_type(data): + """Verify data is of type dict.""" + data_type_check_result = True + if not isinstance(data, dict): + data_type_check_result = False + return data_type_check_result + + +def get_or_create_prefix(host, mask_length, default_status, namespace, job=None): + """Attempt to get a Nautobot Prefix, and create a new one if necessary.""" + prefix = None + new_network = ipaddress.ip_interface(f"{host}/{mask_length}") + try: + prefix = Prefix.objects.get( + prefix=f"{new_network.network}", + namespace=namespace, + ) + except ObjectDoesNotExist: + prefix = Prefix( + prefix=f"{new_network.network}", + namespace=namespace, + type=PrefixTypeChoices.TYPE_NETWORK, + status=default_status, + ) + try: + prefix.validated_save() + except ValidationError as err: + if job: + job.logger.error(f"Prefix {host} failed to create, {err}") + return prefix + + +def get_or_create_ip_address(host, mask_length, namespace, default_ip_status, default_prefix_status, job=None): + """Attempt to get a Nautobot IPAddress, and create a new one if necessary.""" + ip_address = None + + try: + ip_address = IPAddress.objects.get( + host=host, + parent__namespace=namespace, + ) + except ObjectDoesNotExist: + try: + ip_address = IPAddress( + address=f"{host}/{mask_length}", + namespace=namespace, + status=default_ip_status, + ) + ip_address.validated_save() + except ValidationError: + if job: + job.logger.warning( + f"No suitable parent Prefix exists for IP {host} in " + f"Namespace {namespace.name}, a new Prefix will be created." + ) + prefix = get_or_create_prefix(host, mask_length, default_prefix_status, namespace, job) + ip_address = IPAddress.objects.create( + address=f"{host}/{mask_length}", + status=default_ip_status, + parent=prefix, + ) + try: + ip_address.validated_save() + except ValidationError as err: + if job: + job.logger.error(f"IP Address {host} failed to create, {err}") + return ip_address + + +def retrieve_submitted_value(job, ip_address, query_string): + """ + Check for a submitted CSV file and retrieve a the appropriate user submitted value. + + If a user has submitted a CSV file, return the relevant value based on the data + that was parsed when the file was loaded. If a CSV file has not been submitted, + return the value input into the job form. + """ + if job.processed_csv_data: + return job.processed_csv_data[ip_address][query_string] + else: + return getattr(job, query_string) diff --git a/nautobot_device_onboarding/utils/helper.py b/nautobot_device_onboarding/utils/helper.py new file mode 100644 index 00000000..f4c28d77 --- /dev/null +++ b/nautobot_device_onboarding/utils/helper.py @@ -0,0 +1,87 @@ +"""General helper functions for the app.""" + +import socket + +import netaddr +from nautobot.dcim.filters import DeviceFilterSet +from nautobot.dcim.models import Device +from netaddr.core import AddrFormatError +from nornir_nautobot.exceptions import NornirNautobotException + +from nautobot_device_onboarding.exceptions import OnboardException + +FIELDS_PK = { + "location", + "role", +} + +FIELDS_NAME = {"tags"} + + +def get_job_filter(data=None): + """Helper function to return a the filterable list of OS's based on platform.name and a specific custom value.""" + if not data: + data = {} + query = {} + + # Translate instances from FIELDS set to list of primary keys + for field in FIELDS_PK: + if data.get(field): + query[field] = [str(data[field].id)] + + # Translate instances from FIELDS set to list of names + for field in FIELDS_NAME: + if data.get(field): + query[field] = [str(data[field].id)] + # Handle case where object is from single device run all. + if data.get("devices") and isinstance(data["devices"], Device): + query.update({"id": [str(data["devices"].pk)]}) + elif data.get("devices"): + query.update({"id": data["devices"].values_list("pk", flat=True)}) + base_qs = Device.objects.all() + # {'debug': False, 'namespace': , 'devices': ]>, 'location': None, 'device_role': None, 'tag': None, 'port': 22, 'timeout': 30} + devices_filtered = DeviceFilterSet(data=query, queryset=base_qs) + + if not devices_filtered.qs.exists(): + raise NornirNautobotException( + "`E3016:` The provided job parameters didn't match any devices detected. Please select the correct job parameters to correctly match devices." + ) + devices_no_platform = devices_filtered.qs.filter(platform__isnull=True) + if devices_no_platform.exists(): + raise NornirNautobotException( + f"`E3017:` The following device(s) {', '.join([device.name for device in devices_no_platform])} have no platform defined. Platform is required." + ) + + return devices_filtered.qs + + +def onboarding_task_fqdn_to_ip(address): + """Method to assure OT has FQDN resolved to IP address and rewritten into OT. + + If it is a DNS name, attempt to resolve the DNS address and assign the IP address to the + name. + + Returns: + None + + Raises: + OnboardException("fail-general"): + When a prefix was entered for an IP address + OnboardException("fail-dns"): + When a Name lookup via DNS fails to resolve an IP address + """ + try: + # If successful, this is an IP address and can pass + netaddr.IPAddress(address) + return address + # Raise an Exception for Prefix values + except ValueError as err: + raise OnboardException(f"fail-general - ERROR appears a prefix was entered: {address}") from err + # An AddrFormatError exception means that there is not an IP address in the field, and should continue on + except AddrFormatError: + try: + # Perform DNS Lookup + return socket.gethostbyname(address) + except socket.gaierror as err: + # DNS Lookup has failed, Raise an exception for unable to complete DNS lookup + raise OnboardException(f"fail-dns - ERROR failed to complete DNS lookup: {address}") from err diff --git a/poetry.lock b/poetry.lock old mode 100644 new mode 100755 index f91e0c4e..321e2a51 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "amqp" version = "5.2.0" description = "Low-level AMQP client for Python (fork of amqplib)." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -19,7 +18,6 @@ vine = ">=5.0.0,<6.0.0" name = "aniso8601" version = "7.0.0" description = "A library for parsing ISO 8601 strings." -category = "main" optional = false python-versions = "*" files = [ @@ -27,16 +25,48 @@ files = [ {file = "aniso8601-7.0.0.tar.gz", hash = "sha256:513d2b6637b7853806ae79ffaca6f3e8754bdd547048f5ccc1420aec4b714f1e"}, ] +[[package]] +name = "anyio" +version = "4.4.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.8" +files = [ + {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, + {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, +] + +[package.dependencies] +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} +idna = ">=2.8" +sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} + +[package.extras] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.23)"] + +[[package]] +name = "appnope" +version = "0.1.4" +description = "Disable App Nap on macOS >= 10.9" +optional = false +python-versions = ">=3.6" +files = [ + {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, + {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, +] + [[package]] name = "asgiref" -version = "3.7.2" +version = "3.8.1" description = "ASGI specs, helper code, and adapters" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "asgiref-3.7.2-py3-none-any.whl", hash = "sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e"}, - {file = "asgiref-3.7.2.tar.gz", hash = "sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"}, + {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, + {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, ] [package.dependencies] @@ -47,29 +77,55 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] [[package]] name = "astroid" -version = "2.15.8" +version = "3.2.2" description = "An abstract syntax tree for Python with inference support." -category = "dev" optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.8.0" files = [ - {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, - {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, + {file = "astroid-3.2.2-py3-none-any.whl", hash = "sha256:e8a0083b4bb28fcffb6207a3bfc9e5d0a68be951dd7e336d5dcf639c682388c0"}, + {file = "astroid-3.2.2.tar.gz", hash = "sha256:8ead48e31b92b2e217b6c9733a21afafe479d52d6e164dd25fb1a770c7c3cf94"}, ] [package.dependencies] -lazy-object-proxy = ">=1.4.0" typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} -wrapt = [ - {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, + +[[package]] +name = "asttokens" +version = "2.4.1" +description = "Annotate AST trees with source code positions" +optional = false +python-versions = "*" +files = [ + {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, + {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, +] + +[package.dependencies] +six = ">=1.12.0" + +[package.extras] +astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] +test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] + +[[package]] +name = "astunparse" +version = "1.6.3" +description = "An AST unparser for Python" +optional = false +python-versions = "*" +files = [ + {file = "astunparse-1.6.3-py2.py3-none-any.whl", hash = "sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8"}, + {file = "astunparse-1.6.3.tar.gz", hash = "sha256:5ad93a8456f0d084c3456d059fd9a92cce667963232cbf763eac3bc5b7940872"}, ] +[package.dependencies] +six = ">=1.6.1,<2.0" +wheel = ">=0.23.0,<1.0" + [[package]] name = "async-timeout" version = "4.0.3" description = "Timeout context manager for asyncio programs" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -79,28 +135,53 @@ files = [ [[package]] name = "attrs" -version = "23.1.0" +version = "23.2.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, ] [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]", "pre-commit"] +dev = ["attrs[tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + +[[package]] +name = "autopep8" +version = "2.0.0" +description = "A tool that automatically formats Python code to conform to the PEP 8 style guide" +optional = false +python-versions = "*" +files = [ + {file = "autopep8-2.0.0-py2.py3-none-any.whl", hash = "sha256:ad924b42c2e27a1ac58e432166cc4588f5b80747de02d0d35b1ecbd3e7d57207"}, + {file = "autopep8-2.0.0.tar.gz", hash = "sha256:8b1659c7f003e693199f52caffdc06585bb0716900bbc6a7442fd931d658c077"}, +] + +[package.dependencies] +pycodestyle = ">=2.9.1" +tomli = "*" + +[[package]] +name = "backcall" +version = "0.2.0" +description = "Specifications for callback functions passed in to an API" +optional = false +python-versions = "*" +files = [ + {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, + {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, +] [[package]] name = "backports-zoneinfo" version = "0.2.1" description = "Backport of the standard library zoneinfo module" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -130,57 +211,62 @@ tzdata = ["tzdata"] [[package]] name = "bandit" -version = "1.7.5" +version = "1.7.8" description = "Security oriented static analyser for python code." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "bandit-1.7.5-py3-none-any.whl", hash = "sha256:75665181dc1e0096369112541a056c59d1c5f66f9bb74a8d686c3c362b83f549"}, - {file = "bandit-1.7.5.tar.gz", hash = "sha256:bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e"}, + {file = "bandit-1.7.8-py3-none-any.whl", hash = "sha256:509f7af645bc0cd8fd4587abc1a038fc795636671ee8204d502b933aee44f381"}, + {file = "bandit-1.7.8.tar.gz", hash = "sha256:36de50f720856ab24a24dbaa5fee2c66050ed97c1477e0a1159deab1775eab6b"}, ] [package.dependencies] colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} -GitPython = ">=1.0.1" PyYAML = ">=5.3.1" rich = "*" stevedore = ">=1.20.0" [package.extras] -test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "tomli (>=1.1.0)"] +baseline = ["GitPython (>=3.1.30)"] +sarif = ["jschema-to-python (>=1.2.3)", "sarif-om (>=1.0.4)"] +test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)"] toml = ["tomli (>=1.1.0)"] yaml = ["PyYAML"] [[package]] name = "bcrypt" -version = "4.0.1" +version = "4.1.3" description = "Modern password hashing for your software and your servers" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e"}, - {file = "bcrypt-4.0.1-cp36-abi3-win32.whl", hash = "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab"}, - {file = "bcrypt-4.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71"}, - {file = "bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd"}, + {file = "bcrypt-4.1.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:48429c83292b57bf4af6ab75809f8f4daf52aa5d480632e53707805cc1ce9b74"}, + {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a8bea4c152b91fd8319fef4c6a790da5c07840421c2b785084989bf8bbb7455"}, + {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d3b317050a9a711a5c7214bf04e28333cf528e0ed0ec9a4e55ba628d0f07c1a"}, + {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:094fd31e08c2b102a14880ee5b3d09913ecf334cd604af27e1013c76831f7b05"}, + {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4fb253d65da30d9269e0a6f4b0de32bd657a0208a6f4e43d3e645774fb5457f3"}, + {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:193bb49eeeb9c1e2db9ba65d09dc6384edd5608d9d672b4125e9320af9153a15"}, + {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8cbb119267068c2581ae38790e0d1fbae65d0725247a930fc9900c285d95725d"}, + {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6cac78a8d42f9d120b3987f82252bdbeb7e6e900a5e1ba37f6be6fe4e3848286"}, + {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:01746eb2c4299dd0ae1670234bf77704f581dd72cc180f444bfe74eb80495b64"}, + {file = "bcrypt-4.1.3-cp37-abi3-win32.whl", hash = "sha256:037c5bf7c196a63dcce75545c8874610c600809d5d82c305dd327cd4969995bf"}, + {file = "bcrypt-4.1.3-cp37-abi3-win_amd64.whl", hash = "sha256:8a893d192dfb7c8e883c4576813bf18bb9d59e2cfd88b68b725990f033f1b978"}, + {file = "bcrypt-4.1.3-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d4cf6ef1525f79255ef048b3489602868c47aea61f375377f0d00514fe4a78c"}, + {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5698ce5292a4e4b9e5861f7e53b1d89242ad39d54c3da451a93cac17b61921a"}, + {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec3c2e1ca3e5c4b9edb94290b356d082b721f3f50758bce7cce11d8a7c89ce84"}, + {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3a5be252fef513363fe281bafc596c31b552cf81d04c5085bc5dac29670faa08"}, + {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5f7cd3399fbc4ec290378b541b0cf3d4398e4737a65d0f938c7c0f9d5e686611"}, + {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:c4c8d9b3e97209dd7111bf726e79f638ad9224b4691d1c7cfefa571a09b1b2d6"}, + {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:31adb9cbb8737a581a843e13df22ffb7c84638342de3708a98d5c986770f2834"}, + {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:551b320396e1d05e49cc18dd77d970accd52b322441628aca04801bbd1d52a73"}, + {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6717543d2c110a155e6821ce5670c1f512f602eabb77dba95717ca76af79867d"}, + {file = "bcrypt-4.1.3-cp39-abi3-win32.whl", hash = "sha256:6004f5229b50f8493c49232b8e75726b568535fd300e5039e255d919fc3a07f2"}, + {file = "bcrypt-4.1.3-cp39-abi3-win_amd64.whl", hash = "sha256:2505b54afb074627111b5a8dc9b6ae69d0f01fea65c2fcaea403448c503d3991"}, + {file = "bcrypt-4.1.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:cb9c707c10bddaf9e5ba7cdb769f3e889e60b7d4fea22834b261f51ca2b89fed"}, + {file = "bcrypt-4.1.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9f8ea645eb94fb6e7bea0cf4ba121c07a3a182ac52876493870033141aa687bc"}, + {file = "bcrypt-4.1.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f44a97780677e7ac0ca393bd7982b19dbbd8d7228c1afe10b128fd9550eef5f1"}, + {file = "bcrypt-4.1.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d84702adb8f2798d813b17d8187d27076cca3cd52fe3686bb07a9083930ce650"}, + {file = "bcrypt-4.1.3.tar.gz", hash = "sha256:2ee15dd749f5952fe3f0430d0ff6b74082e159c50332a1413d51b5689cf06623"}, ] [package.extras] @@ -191,7 +277,6 @@ typecheck = ["mypy"] name = "billiard" version = "4.2.0" description = "Python multiprocessing fork with improvements and bugfixes" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -201,30 +286,33 @@ files = [ [[package]] name = "black" -version = "23.11.0" +version = "24.4.2" description = "The uncompromising code formatter." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "black-23.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dbea0bb8575c6b6303cc65017b46351dc5953eea5c0a59d7b7e3a2d2f433a911"}, - {file = "black-23.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:412f56bab20ac85927f3a959230331de5614aecda1ede14b373083f62ec24e6f"}, - {file = "black-23.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d136ef5b418c81660ad847efe0e55c58c8208b77a57a28a503a5f345ccf01394"}, - {file = "black-23.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:6c1cac07e64433f646a9a838cdc00c9768b3c362805afc3fce341af0e6a9ae9f"}, - {file = "black-23.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cf57719e581cfd48c4efe28543fea3d139c6b6f1238b3f0102a9c73992cbb479"}, - {file = "black-23.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:698c1e0d5c43354ec5d6f4d914d0d553a9ada56c85415700b81dc90125aac244"}, - {file = "black-23.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:760415ccc20f9e8747084169110ef75d545f3b0932ee21368f63ac0fee86b221"}, - {file = "black-23.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:58e5f4d08a205b11800332920e285bd25e1a75c54953e05502052738fe16b3b5"}, - {file = "black-23.11.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:45aa1d4675964946e53ab81aeec7a37613c1cb71647b5394779e6efb79d6d187"}, - {file = "black-23.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c44b7211a3a0570cc097e81135faa5f261264f4dfaa22bd5ee2875a4e773bd6"}, - {file = "black-23.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a9acad1451632021ee0d146c8765782a0c3846e0e0ea46659d7c4f89d9b212b"}, - {file = "black-23.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:fc7f6a44d52747e65a02558e1d807c82df1d66ffa80a601862040a43ec2e3142"}, - {file = "black-23.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7f622b6822f02bfaf2a5cd31fdb7cd86fcf33dab6ced5185c35f5db98260b055"}, - {file = "black-23.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:250d7e60f323fcfc8ea6c800d5eba12f7967400eb6c2d21ae85ad31c204fb1f4"}, - {file = "black-23.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5133f5507007ba08d8b7b263c7aa0f931af5ba88a29beacc4b2dc23fcefe9c06"}, - {file = "black-23.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:421f3e44aa67138ab1b9bfbc22ee3780b22fa5b291e4db8ab7eee95200726b07"}, - {file = "black-23.11.0-py3-none-any.whl", hash = "sha256:54caaa703227c6e0c87b76326d0862184729a69b73d3b7305b6288e1d830067e"}, - {file = "black-23.11.0.tar.gz", hash = "sha256:4c68855825ff432d197229846f971bc4d6666ce90492e5b02013bcaca4d9ab05"}, + {file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"}, + {file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"}, + {file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"}, + {file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"}, + {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, + {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, + {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, + {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, + {file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"}, + {file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"}, + {file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"}, + {file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"}, + {file = "black-24.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7"}, + {file = "black-24.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94"}, + {file = "black-24.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8"}, + {file = "black-24.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c"}, + {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, + {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, + {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, + {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, + {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, + {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, ] [package.dependencies] @@ -238,20 +326,19 @@ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] +d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "celery" -version = "5.3.5" +version = "5.3.6" description = "Distributed Task Queue." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "celery-5.3.5-py3-none-any.whl", hash = "sha256:30b75ac60fb081c2d9f8881382c148ed7c9052031a75a1e8743ff4b4b071f184"}, - {file = "celery-5.3.5.tar.gz", hash = "sha256:6b65d8dd5db499dd6190c45aa6398e171b99592f2af62c312f7391587feb5458"}, + {file = "celery-5.3.6-py3-none-any.whl", hash = "sha256:9da4ea0118d232ce97dff5ed4974587fb1c0ff5c10042eb15278487cdd27d1af"}, + {file = "celery-5.3.6.tar.gz", hash = "sha256:870cc71d737c0200c397290d730344cc991d13a057534353d124c9380267aab9"}, ] [package.dependencies] @@ -261,7 +348,7 @@ click = ">=8.1.2,<9.0" click-didyoumean = ">=0.3.0" click-plugins = ">=1.1.1" click-repl = ">=0.2.0" -kombu = ">=5.3.3,<6.0" +kombu = ">=5.3.4,<6.0" python-dateutil = ">=2.8.2" tzdata = ">=2022.7" vine = ">=5.1.0,<6.0" @@ -278,7 +365,7 @@ couchbase = ["couchbase (>=3.0.0)"] couchdb = ["pycouchdb (==1.14.2)"] django = ["Django (>=2.2.28)"] dynamodb = ["boto3 (>=1.26.143)"] -elasticsearch = ["elastic-transport (<=8.10.0)", "elasticsearch (<=8.10.1)"] +elasticsearch = ["elastic-transport (<=8.10.0)", "elasticsearch (<=8.11.0)"] eventlet = ["eventlet (>=0.32.0)"] gevent = ["gevent (>=1.5.0)"] librabbitmq = ["librabbitmq (>=2.0.0)"] @@ -301,21 +388,19 @@ zstd = ["zstandard (==0.22.0)"] [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] name = "cffi" version = "1.16.0" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -380,7 +465,6 @@ pycparser = "*" name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -480,7 +564,6 @@ files = [ name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -491,16 +574,32 @@ files = [ [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +[[package]] +name = "click-default-group" +version = "1.2.4" +description = "click_default_group" +optional = false +python-versions = ">=2.7" +files = [ + {file = "click_default_group-1.2.4-py2.py3-none-any.whl", hash = "sha256:9b60486923720e7fc61731bdb32b617039aba820e22e1c88766b1125592eaa5f"}, + {file = "click_default_group-1.2.4.tar.gz", hash = "sha256:eb3f3c99ec0d456ca6cd2a7f08f7d4e91771bef51b01bdd9580cc6450fe1251e"}, +] + +[package.dependencies] +click = "*" + +[package.extras] +test = ["pytest"] + [[package]] name = "click-didyoumean" -version = "0.3.0" +version = "0.3.1" description = "Enables git-like *did-you-mean* feature in click" -category = "main" optional = false -python-versions = ">=3.6.2,<4.0.0" +python-versions = ">=3.6.2" files = [ - {file = "click-didyoumean-0.3.0.tar.gz", hash = "sha256:f184f0d851d96b6d29297354ed981b7dd71df7ff500d82fa6d11f0856bee8035"}, - {file = "click_didyoumean-0.3.0-py3-none-any.whl", hash = "sha256:a0713dc7a1de3f06bc0df5a9567ad19ead2d3d5689b434768a6145bff77c0667"}, + {file = "click_didyoumean-0.3.1-py3-none-any.whl", hash = "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c"}, + {file = "click_didyoumean-0.3.1.tar.gz", hash = "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463"}, ] [package.dependencies] @@ -510,7 +609,6 @@ click = ">=7" name = "click-plugins" version = "1.1.1" description = "An extension module for click to enable registering CLI commands via setuptools entry-points." -category = "main" optional = false python-versions = "*" files = [ @@ -528,7 +626,6 @@ dev = ["coveralls", "pytest (>=3.6)", "pytest-cov", "wheel"] name = "click-repl" version = "0.3.0" description = "REPL plugin for Click" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -547,7 +644,6 @@ testing = ["pytest (>=7.2.1)", "pytest-cov (>=4.0.0)", "tox (>=4.4.3)"] name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -557,64 +653,63 @@ files = [ [[package]] name = "coverage" -version = "7.3.2" +version = "7.5.3" description = "Code coverage measurement for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf"}, - {file = "coverage-7.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c"}, - {file = "coverage-7.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148"}, - {file = "coverage-7.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9"}, - {file = "coverage-7.3.2-cp310-cp310-win32.whl", hash = "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f"}, - {file = "coverage-7.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611"}, - {file = "coverage-7.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c"}, - {file = "coverage-7.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3"}, - {file = "coverage-7.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c"}, - {file = "coverage-7.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312"}, - {file = "coverage-7.3.2-cp311-cp311-win32.whl", hash = "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640"}, - {file = "coverage-7.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2"}, - {file = "coverage-7.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836"}, - {file = "coverage-7.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4"}, - {file = "coverage-7.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84"}, - {file = "coverage-7.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a"}, - {file = "coverage-7.3.2-cp312-cp312-win32.whl", hash = "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb"}, - {file = "coverage-7.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed"}, - {file = "coverage-7.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738"}, - {file = "coverage-7.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c"}, - {file = "coverage-7.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901"}, - {file = "coverage-7.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76"}, - {file = "coverage-7.3.2-cp38-cp38-win32.whl", hash = "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92"}, - {file = "coverage-7.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a"}, - {file = "coverage-7.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce"}, - {file = "coverage-7.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25"}, - {file = "coverage-7.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc"}, - {file = "coverage-7.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083"}, - {file = "coverage-7.3.2-cp39-cp39-win32.whl", hash = "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce"}, - {file = "coverage-7.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f"}, - {file = "coverage-7.3.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637"}, - {file = "coverage-7.3.2.tar.gz", hash = "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef"}, + {file = "coverage-7.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a6519d917abb15e12380406d721e37613e2a67d166f9fb7e5a8ce0375744cd45"}, + {file = "coverage-7.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aea7da970f1feccf48be7335f8b2ca64baf9b589d79e05b9397a06696ce1a1ec"}, + {file = "coverage-7.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:923b7b1c717bd0f0f92d862d1ff51d9b2b55dbbd133e05680204465f454bb286"}, + {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62bda40da1e68898186f274f832ef3e759ce929da9a9fd9fcf265956de269dbc"}, + {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8b7339180d00de83e930358223c617cc343dd08e1aa5ec7b06c3a121aec4e1d"}, + {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:25a5caf742c6195e08002d3b6c2dd6947e50efc5fc2c2205f61ecb47592d2d83"}, + {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:05ac5f60faa0c704c0f7e6a5cbfd6f02101ed05e0aee4d2822637a9e672c998d"}, + {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:239a4e75e09c2b12ea478d28815acf83334d32e722e7433471fbf641c606344c"}, + {file = "coverage-7.5.3-cp310-cp310-win32.whl", hash = "sha256:a5812840d1d00eafae6585aba38021f90a705a25b8216ec7f66aebe5b619fb84"}, + {file = "coverage-7.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:33ca90a0eb29225f195e30684ba4a6db05dbef03c2ccd50b9077714c48153cac"}, + {file = "coverage-7.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f81bc26d609bf0fbc622c7122ba6307993c83c795d2d6f6f6fd8c000a770d974"}, + {file = "coverage-7.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7cec2af81f9e7569280822be68bd57e51b86d42e59ea30d10ebdbb22d2cb7232"}, + {file = "coverage-7.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55f689f846661e3f26efa535071775d0483388a1ccfab899df72924805e9e7cd"}, + {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50084d3516aa263791198913a17354bd1dc627d3c1639209640b9cac3fef5807"}, + {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:341dd8f61c26337c37988345ca5c8ccabeff33093a26953a1ac72e7d0103c4fb"}, + {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ab0b028165eea880af12f66086694768f2c3139b2c31ad5e032c8edbafca6ffc"}, + {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5bc5a8c87714b0c67cfeb4c7caa82b2d71e8864d1a46aa990b5588fa953673b8"}, + {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:38a3b98dae8a7c9057bd91fbf3415c05e700a5114c5f1b5b0ea5f8f429ba6614"}, + {file = "coverage-7.5.3-cp311-cp311-win32.whl", hash = "sha256:fcf7d1d6f5da887ca04302db8e0e0cf56ce9a5e05f202720e49b3e8157ddb9a9"}, + {file = "coverage-7.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:8c836309931839cca658a78a888dab9676b5c988d0dd34ca247f5f3e679f4e7a"}, + {file = "coverage-7.5.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:296a7d9bbc598e8744c00f7a6cecf1da9b30ae9ad51c566291ff1314e6cbbed8"}, + {file = "coverage-7.5.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:34d6d21d8795a97b14d503dcaf74226ae51eb1f2bd41015d3ef332a24d0a17b3"}, + {file = "coverage-7.5.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e317953bb4c074c06c798a11dbdd2cf9979dbcaa8ccc0fa4701d80042d4ebf1"}, + {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:705f3d7c2b098c40f5b81790a5fedb274113373d4d1a69e65f8b68b0cc26f6db"}, + {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1196e13c45e327d6cd0b6e471530a1882f1017eb83c6229fc613cd1a11b53cd"}, + {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:015eddc5ccd5364dcb902eaecf9515636806fa1e0d5bef5769d06d0f31b54523"}, + {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fd27d8b49e574e50caa65196d908f80e4dff64d7e592d0c59788b45aad7e8b35"}, + {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:33fc65740267222fc02975c061eb7167185fef4cc8f2770267ee8bf7d6a42f84"}, + {file = "coverage-7.5.3-cp312-cp312-win32.whl", hash = "sha256:7b2a19e13dfb5c8e145c7a6ea959485ee8e2204699903c88c7d25283584bfc08"}, + {file = "coverage-7.5.3-cp312-cp312-win_amd64.whl", hash = "sha256:0bbddc54bbacfc09b3edaec644d4ac90c08ee8ed4844b0f86227dcda2d428fcb"}, + {file = "coverage-7.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f78300789a708ac1f17e134593f577407d52d0417305435b134805c4fb135adb"}, + {file = "coverage-7.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b368e1aee1b9b75757942d44d7598dcd22a9dbb126affcbba82d15917f0cc155"}, + {file = "coverage-7.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f836c174c3a7f639bded48ec913f348c4761cbf49de4a20a956d3431a7c9cb24"}, + {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:244f509f126dc71369393ce5fea17c0592c40ee44e607b6d855e9c4ac57aac98"}, + {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4c2872b3c91f9baa836147ca33650dc5c172e9273c808c3c3199c75490e709d"}, + {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd4b3355b01273a56b20c219e74e7549e14370b31a4ffe42706a8cda91f19f6d"}, + {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f542287b1489c7a860d43a7d8883e27ca62ab84ca53c965d11dac1d3a1fab7ce"}, + {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:75e3f4e86804023e991096b29e147e635f5e2568f77883a1e6eed74512659ab0"}, + {file = "coverage-7.5.3-cp38-cp38-win32.whl", hash = "sha256:c59d2ad092dc0551d9f79d9d44d005c945ba95832a6798f98f9216ede3d5f485"}, + {file = "coverage-7.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:fa21a04112c59ad54f69d80e376f7f9d0f5f9123ab87ecd18fbb9ec3a2beed56"}, + {file = "coverage-7.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5102a92855d518b0996eb197772f5ac2a527c0ec617124ad5242a3af5e25f85"}, + {file = "coverage-7.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d1da0a2e3b37b745a2b2a678a4c796462cf753aebf94edcc87dcc6b8641eae31"}, + {file = "coverage-7.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8383a6c8cefba1b7cecc0149415046b6fc38836295bc4c84e820872eb5478b3d"}, + {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9aad68c3f2566dfae84bf46295a79e79d904e1c21ccfc66de88cd446f8686341"}, + {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e079c9ec772fedbade9d7ebc36202a1d9ef7291bc9b3a024ca395c4d52853d7"}, + {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bde997cac85fcac227b27d4fb2c7608a2c5f6558469b0eb704c5726ae49e1c52"}, + {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:990fb20b32990b2ce2c5f974c3e738c9358b2735bc05075d50a6f36721b8f303"}, + {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3d5a67f0da401e105753d474369ab034c7bae51a4c31c77d94030d59e41df5bd"}, + {file = "coverage-7.5.3-cp39-cp39-win32.whl", hash = "sha256:e08c470c2eb01977d221fd87495b44867a56d4d594f43739a8028f8646a51e0d"}, + {file = "coverage-7.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:1d2a830ade66d3563bb61d1e3c77c8def97b30ed91e166c67d0632c018f380f0"}, + {file = "coverage-7.5.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:3538d8fb1ee9bdd2e2692b3b18c22bb1c19ffbefd06880f5ac496e42d7bb3884"}, + {file = "coverage-7.5.3.tar.gz", hash = "sha256:04aefca5190d1dc7a53a4c1a5a7f8568811306d7a8ee231c42fb69215571944f"}, ] [package.extras] @@ -622,13 +717,13 @@ toml = ["tomli"] [[package]] name = "cron-descriptor" -version = "1.4.0" +version = "1.4.3" description = "A Python library that converts cron expressions into human readable strings." -category = "main" optional = false python-versions = "*" files = [ - {file = "cron_descriptor-1.4.0.tar.gz", hash = "sha256:b6ff4e3a988d7ca04a4ab150248e9f166fb7a5c828a85090e75bcc25aa93b4dd"}, + {file = "cron_descriptor-1.4.3-py3-none-any.whl", hash = "sha256:a67ba21804983b1427ed7f3e1ec27ee77bf24c652b0430239c268c5ddfbf9dc0"}, + {file = "cron_descriptor-1.4.3.tar.gz", hash = "sha256:7b1a00d7d25d6ae6896c0da4457e790b98cba778398a3d48e341e5e0d33f0488"}, ] [package.extras] @@ -636,55 +731,91 @@ dev = ["polib"] [[package]] name = "cryptography" -version = "41.0.5" +version = "42.0.7" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:da6a0ff8f1016ccc7477e6339e1d50ce5f59b88905585f77193ebd5068f1e797"}, - {file = "cryptography-41.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b948e09fe5fb18517d99994184854ebd50b57248736fd4c720ad540560174ec5"}, - {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d38e6031e113b7421db1de0c1b1f7739564a88f1684c6b89234fbf6c11b75147"}, - {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e270c04f4d9b5671ebcc792b3ba5d4488bf7c42c3c241a3748e2599776f29696"}, - {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ec3b055ff8f1dce8e6ef28f626e0972981475173d7973d63f271b29c8a2897da"}, - {file = "cryptography-41.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:7d208c21e47940369accfc9e85f0de7693d9a5d843c2509b3846b2db170dfd20"}, - {file = "cryptography-41.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:8254962e6ba1f4d2090c44daf50a547cd5f0bf446dc658a8e5f8156cae0d8548"}, - {file = "cryptography-41.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a48e74dad1fb349f3dc1d449ed88e0017d792997a7ad2ec9587ed17405667e6d"}, - {file = "cryptography-41.0.5-cp37-abi3-win32.whl", hash = "sha256:d3977f0e276f6f5bf245c403156673db103283266601405376f075c849a0b936"}, - {file = "cryptography-41.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:73801ac9736741f220e20435f84ecec75ed70eda90f781a148f1bad546963d81"}, - {file = "cryptography-41.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3be3ca726e1572517d2bef99a818378bbcf7d7799d5372a46c79c29eb8d166c1"}, - {file = "cryptography-41.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e886098619d3815e0ad5790c973afeee2c0e6e04b4da90b88e6bd06e2a0b1b72"}, - {file = "cryptography-41.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:573eb7128cbca75f9157dcde974781209463ce56b5804983e11a1c462f0f4e88"}, - {file = "cryptography-41.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0c327cac00f082013c7c9fb6c46b7cc9fa3c288ca702c74773968173bda421bf"}, - {file = "cryptography-41.0.5-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:227ec057cd32a41c6651701abc0328135e472ed450f47c2766f23267b792a88e"}, - {file = "cryptography-41.0.5-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:22892cc830d8b2c89ea60148227631bb96a7da0c1b722f2aac8824b1b7c0b6b8"}, - {file = "cryptography-41.0.5-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5a70187954ba7292c7876734183e810b728b4f3965fbe571421cb2434d279179"}, - {file = "cryptography-41.0.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:88417bff20162f635f24f849ab182b092697922088b477a7abd6664ddd82291d"}, - {file = "cryptography-41.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c707f7afd813478e2019ae32a7c49cd932dd60ab2d2a93e796f68236b7e1fbf1"}, - {file = "cryptography-41.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:580afc7b7216deeb87a098ef0674d6ee34ab55993140838b14c9b83312b37b86"}, - {file = "cryptography-41.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fba1e91467c65fe64a82c689dc6cf58151158993b13eb7a7f3f4b7f395636723"}, - {file = "cryptography-41.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d2a6a598847c46e3e321a7aef8af1436f11c27f1254933746304ff014664d84"}, - {file = "cryptography-41.0.5.tar.gz", hash = "sha256:392cb88b597247177172e02da6b7a63deeff1937fa6fec3bbf902ebd75d97ec7"}, -] - -[package.dependencies] -cffi = ">=1.12" + {file = "cryptography-42.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a987f840718078212fdf4504d0fd4c6effe34a7e4740378e59d47696e8dfb477"}, + {file = "cryptography-42.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bd13b5e9b543532453de08bcdc3cc7cebec6f9883e886fd20a92f26940fd3e7a"}, + {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a79165431551042cc9d1d90e6145d5d0d3ab0f2d66326c201d9b0e7f5bf43604"}, + {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a47787a5e3649008a1102d3df55424e86606c9bae6fb77ac59afe06d234605f8"}, + {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:02c0eee2d7133bdbbc5e24441258d5d2244beb31da5ed19fbb80315f4bbbff55"}, + {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5e44507bf8d14b36b8389b226665d597bc0f18ea035d75b4e53c7b1ea84583cc"}, + {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:7f8b25fa616d8b846aef64b15c606bb0828dbc35faf90566eb139aa9cff67af2"}, + {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93a3209f6bb2b33e725ed08ee0991b92976dfdcf4e8b38646540674fc7508e13"}, + {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e6b8f1881dac458c34778d0a424ae5769de30544fc678eac51c1c8bb2183e9da"}, + {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3de9a45d3b2b7d8088c3fbf1ed4395dfeff79d07842217b38df14ef09ce1d8d7"}, + {file = "cryptography-42.0.7-cp37-abi3-win32.whl", hash = "sha256:789caea816c6704f63f6241a519bfa347f72fbd67ba28d04636b7c6b7da94b0b"}, + {file = "cryptography-42.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:8cb8ce7c3347fcf9446f201dc30e2d5a3c898d009126010cbd1f443f28b52678"}, + {file = "cryptography-42.0.7-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:a3a5ac8b56fe37f3125e5b72b61dcde43283e5370827f5233893d461b7360cd4"}, + {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:779245e13b9a6638df14641d029add5dc17edbef6ec915688f3acb9e720a5858"}, + {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d563795db98b4cd57742a78a288cdbdc9daedac29f2239793071fe114f13785"}, + {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:31adb7d06fe4383226c3e963471f6837742889b3c4caa55aac20ad951bc8ffda"}, + {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:efd0bf5205240182e0f13bcaea41be4fdf5c22c5129fc7ced4a0282ac86998c9"}, + {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a9bc127cdc4ecf87a5ea22a2556cab6c7eda2923f84e4f3cc588e8470ce4e42e"}, + {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:3577d029bc3f4827dd5bf8bf7710cac13527b470bbf1820a3f394adb38ed7d5f"}, + {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2e47577f9b18723fa294b0ea9a17d5e53a227867a0a4904a1a076d1646d45ca1"}, + {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1a58839984d9cb34c855197043eaae2c187d930ca6d644612843b4fe8513c886"}, + {file = "cryptography-42.0.7-cp39-abi3-win32.whl", hash = "sha256:e6b79d0adb01aae87e8a44c2b64bc3f3fe59515280e00fb6d57a7267a2583cda"}, + {file = "cryptography-42.0.7-cp39-abi3-win_amd64.whl", hash = "sha256:16268d46086bb8ad5bf0a2b5544d8a9ed87a0e33f5e77dd3c3301e63d941a83b"}, + {file = "cryptography-42.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2954fccea107026512b15afb4aa664a5640cd0af630e2ee3962f2602693f0c82"}, + {file = "cryptography-42.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:362e7197754c231797ec45ee081f3088a27a47c6c01eff2ac83f60f85a50fe60"}, + {file = "cryptography-42.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4f698edacf9c9e0371112792558d2f705b5645076cc0aaae02f816a0171770fd"}, + {file = "cryptography-42.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5482e789294854c28237bba77c4c83be698be740e31a3ae5e879ee5444166582"}, + {file = "cryptography-42.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e9b2a6309f14c0497f348d08a065d52f3020656f675819fc405fb63bbcd26562"}, + {file = "cryptography-42.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d8e3098721b84392ee45af2dd554c947c32cc52f862b6a3ae982dbb90f577f14"}, + {file = "cryptography-42.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c65f96dad14f8528a447414125e1fc8feb2ad5a272b8f68477abbcc1ea7d94b9"}, + {file = "cryptography-42.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36017400817987670037fbb0324d71489b6ead6231c9604f8fc1f7d008087c68"}, + {file = "cryptography-42.0.7.tar.gz", hash = "sha256:ecbfbc00bf55888edda9868a4cf927205de8499e7fabe6c050322298382953f2"}, +] + +[package.dependencies] +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] nox = ["nox"] -pep8test = ["black", "check-sdist", "mypy", "ruff"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] +[[package]] +name = "decorator" +version = "5.1.1" +description = "Decorators for Humans" +optional = false +python-versions = ">=3.5" +files = [ + {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, + {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, +] + +[[package]] +name = "deepdiff" +version = "6.7.1" +description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." +optional = false +python-versions = ">=3.7" +files = [ + {file = "deepdiff-6.7.1-py3-none-any.whl", hash = "sha256:58396bb7a863cbb4ed5193f548c56f18218060362311aa1dc36397b2f25108bd"}, + {file = "deepdiff-6.7.1.tar.gz", hash = "sha256:b367e6fa6caac1c9f500adc79ada1b5b1242c50d5f716a1a4362030197847d30"}, +] + +[package.dependencies] +ordered-set = ">=4.0.2,<4.2.0" + +[package.extras] +cli = ["click (==8.1.3)", "pyyaml (==6.0.1)"] +optimize = ["orjson"] + [[package]] name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -692,31 +823,51 @@ files = [ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, ] +[[package]] +name = "diffsync" +version = "1.10.0" +description = "Library to easily sync/diff/update 2 different data sources" +optional = false +python-versions = ">=3.8,<4.0" +files = [ + {file = "diffsync-1.10.0-py3-none-any.whl", hash = "sha256:f4368c97162d51eecc7a8e87026c731197a694026cabcf2ab4f16d18d7bdadbd"}, + {file = "diffsync-1.10.0.tar.gz", hash = "sha256:a9d7cb8e8ce983b446bf858c1c5c82cf473fcf231db73c0855e8c59ee7cd8370"}, +] + +[package.dependencies] +colorama = ">=0.4.3,<0.5.0" +packaging = ">=21.3,<24.0" +pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0" +structlog = ">=20.1.0,<23.0.0" +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +redis = ["redis (>=4.3,<5.0)"] + [[package]] name = "dill" -version = "0.3.7" +version = "0.3.8" description = "serialize all of Python" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "dill-0.3.7-py3-none-any.whl", hash = "sha256:76b122c08ef4ce2eedcd4d1abd8e641114bfc6c2867f49f3c41facf65bf19f5e"}, - {file = "dill-0.3.7.tar.gz", hash = "sha256:cc1c8b182eb3013e24bd475ff2e9295af86c1a38eb1aff128dac8962a9ce3c03"}, + {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, + {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, ] [package.extras] graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] [[package]] name = "django" -version = "3.2.23" +version = "3.2.25" description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "Django-3.2.23-py3-none-any.whl", hash = "sha256:d48608d5f62f2c1e260986835db089fa3b79d6f58510881d316b8d88345ae6e1"}, - {file = "Django-3.2.23.tar.gz", hash = "sha256:82968f3640e29ef4a773af2c28448f5f7a08d001c6ac05b32d02aeee6509508b"}, + {file = "Django-3.2.25-py3-none-any.whl", hash = "sha256:a52ea7fcf280b16f7b739cec38fa6d3f8953a5456986944c3ca97e79882b4e38"}, + {file = "Django-3.2.25.tar.gz", hash = "sha256:7ca38a78654aee72378594d63e51636c04b8e28574f5505dff630895b5472777"}, ] [package.dependencies] @@ -732,7 +883,6 @@ bcrypt = ["bcrypt"] name = "django-ajax-tables" version = "1.1.1" description = "Django tag for ajax-enabled tables" -category = "main" optional = false python-versions = "*" files = [ @@ -742,45 +892,42 @@ files = [ [[package]] name = "django-celery-beat" -version = "2.5.0" +version = "2.6.0" description = "Database-backed Periodic Tasks." -category = "main" optional = false python-versions = "*" files = [ - {file = "django-celery-beat-2.5.0.tar.gz", hash = "sha256:cd0a47f5958402f51ac0c715bc942ae33d7b50b4e48cba91bc3f2712be505df1"}, - {file = "django_celery_beat-2.5.0-py3-none-any.whl", hash = "sha256:ae460faa5ea142fba0875409095d22f6bd7bcc7377889b85e8cab5c0dfb781fe"}, + {file = "django-celery-beat-2.6.0.tar.gz", hash = "sha256:f75b2d129731f1214be8383e18fae6bfeacdb55dffb2116ce849222c0106f9ad"}, ] [package.dependencies] "backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} celery = ">=5.2.3,<6.0" cron-descriptor = ">=1.2.32" -Django = ">=2.2,<5.0" +Django = ">=2.2,<5.1" django-timezone-field = ">=5.0" python-crontab = ">=2.3.4" tzdata = "*" [[package]] name = "django-celery-results" -version = "2.4.0" +version = "2.5.1" description = "Celery result backends for Django." -category = "main" optional = false python-versions = "*" files = [ - {file = "django_celery_results-2.4.0-py3-none-any.whl", hash = "sha256:be91307c02fbbf0dda21993c3001c60edb74595444ccd6ad696552fe3689e85b"}, - {file = "django_celery_results-2.4.0.tar.gz", hash = "sha256:75aa51970db5691cbf242c6a0ff50c8cdf419e265cd0e9b772335d06436c4b99"}, + {file = "django_celery_results-2.5.1-py3-none-any.whl", hash = "sha256:0da4cd5ecc049333e4524a23fcfc3460dfae91aa0a60f1fae4b6b2889c254e01"}, + {file = "django_celery_results-2.5.1.tar.gz", hash = "sha256:3ecb7147f773f34d0381bac6246337ce4cf88a2ea7b82774ed48e518b67bb8fd"}, ] [package.dependencies] -celery = ">=5.2.3,<6.0" +celery = ">=5.2.7,<6.0" +Django = ">=3.2.18" [[package]] name = "django-constance" version = "2.9.1" description = "Django live settings with pluggable backends, including Redis." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -797,28 +944,28 @@ redis = ["redis"] [[package]] name = "django-cors-headers" -version = "4.2.0" +version = "4.3.1" description = "django-cors-headers is a Django application for handling the server headers required for Cross-Origin Resource Sharing (CORS)." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "django_cors_headers-4.2.0-py3-none-any.whl", hash = "sha256:9ada212b0e2efd4a5e339360ffc869cb21ac5605e810afe69f7308e577ea5bde"}, - {file = "django_cors_headers-4.2.0.tar.gz", hash = "sha256:f9749c6410fe738278bc2b6ef17f05195bc7b251693c035752d8257026af024f"}, + {file = "django-cors-headers-4.3.1.tar.gz", hash = "sha256:0bf65ef45e606aff1994d35503e6b677c0b26cafff6506f8fd7187f3be840207"}, + {file = "django_cors_headers-4.3.1-py3-none-any.whl", hash = "sha256:0b1fd19297e37417fc9f835d39e45c8c642938ddba1acce0c1753d3edef04f36"}, ] [package.dependencies] +asgiref = ">=3.6" Django = ">=3.2" [[package]] name = "django-db-file-storage" -version = "0.5.5" +version = "0.5.6.1" description = "Custom FILE_STORAGE for Django. Saves files in your database instead of your file system." -category = "main" optional = false python-versions = "*" files = [ - {file = "django-db-file-storage-0.5.5.tar.gz", hash = "sha256:5d5da694b78ab202accab4508b958e0e37b3d146310e76f6f6125e1bdeaaad14"}, + {file = "django-db-file-storage-0.5.6.1.tar.gz", hash = "sha256:f0c4540ed6b772e8b3141eae3222acde4c29ab771477a5c999013a3980856c7f"}, + {file = "django_db_file_storage-0.5.6.1-py3-none-any.whl", hash = "sha256:3feac1e060b550c3c03c35e95d2111d9f100bc247863ace691a78b107f1fc3d5"}, ] [package.dependencies] @@ -826,14 +973,13 @@ Django = "*" [[package]] name = "django-debug-toolbar" -version = "4.2.0" +version = "4.3.0" description = "A configurable set of panels that display various debug information about the current request/response." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "django_debug_toolbar-4.2.0-py3-none-any.whl", hash = "sha256:af99128c06e8e794479e65ab62cc6c7d1e74e1c19beb44dcbf9bad7a9c017327"}, - {file = "django_debug_toolbar-4.2.0.tar.gz", hash = "sha256:bc7fdaafafcdedefcc67a4a5ad9dac96efd6e41db15bc74d402a54a2ba4854dc"}, + {file = "django_debug_toolbar-4.3.0-py3-none-any.whl", hash = "sha256:e09b7dcb8417b743234dfc57c95a7c1d1d87a88844abd13b4c5387f807b31bf6"}, + {file = "django_debug_toolbar-4.3.0.tar.gz", hash = "sha256:0b0dddee5ea29b9cb678593bc0d7a6d76b21d7799cb68e091a2148341a80f3c4"}, ] [package.dependencies] @@ -844,7 +990,6 @@ sqlparse = ">=0.2" name = "django-extensions" version = "3.2.3" description = "Extensions for Django" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -857,14 +1002,13 @@ Django = ">=3.2" [[package]] name = "django-filter" -version = "23.1" +version = "23.5" description = "Django-filter is a reusable Django application for allowing users to filter querysets dynamically." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "django-filter-23.1.tar.gz", hash = "sha256:dee5dcf2cea4d7f767e271b6d01f767fce7500676d5e5dc58dac8154000b87df"}, - {file = "django_filter-23.1-py3-none-any.whl", hash = "sha256:e3c52ad83c32fb5882125105efb5fea2a1d6a85e7dc64b04ef52edbf14451b6c"}, + {file = "django-filter-23.5.tar.gz", hash = "sha256:67583aa43b91fe8c49f74a832d95f4d8442be628fd4c6d65e9f811f5153a4e5c"}, + {file = "django_filter-23.5-py3-none-any.whl", hash = "sha256:99122a201d83860aef4fe77758b69dda913e874cc5e0eaa50a86b0b18d708400"}, ] [package.dependencies] @@ -872,14 +1016,13 @@ Django = ">=3.2" [[package]] name = "django-health-check" -version = "3.17.0" +version = "3.18.2" description = "Run checks on services like databases, queue servers, celery processes, etc." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "django-health-check-3.17.0.tar.gz", hash = "sha256:d1b8671e79d1de6e3dd1a9c69566222b0bfcfacca8b90511a4407b2d0d3d2778"}, - {file = "django_health_check-3.17.0-py2.py3-none-any.whl", hash = "sha256:20dc5ccb516a4e7163593fd4026f0a7531e3027b47d23ebe3bd9dbc99ac4354c"}, + {file = "django_health_check-3.18.2-py2.py3-none-any.whl", hash = "sha256:16f9c9186236cbc2858fa0d0ecc3566ba2ad2b72683e5678d0d58eb9e8bbba1a"}, + {file = "django_health_check-3.18.2.tar.gz", hash = "sha256:21235120f8d756fa75ba430d0b0dbb04620fbd7bfac92ed6a0b911915ba38918"}, ] [package.dependencies] @@ -887,34 +1030,32 @@ django = ">=2.2" [package.extras] docs = ["sphinx"] -test = ["celery", "pytest", "pytest-cov", "pytest-django", "redis"] +test = ["boto3", "celery", "django-storages", "pytest", "pytest-cov", "pytest-django", "redis"] [[package]] name = "django-jinja" -version = "2.10.2" +version = "2.11.0" description = "Jinja2 templating language integrated in Django." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "django-jinja-2.10.2.tar.gz", hash = "sha256:bfdfbb55c1f5a679d69ad575d550c4707d386634009152efe014089f3c4d1412"}, - {file = "django_jinja-2.10.2-py3-none-any.whl", hash = "sha256:dd003ec1c95c0989eb28a538831bced62b1b61da551cb44a5dfd708fcf75589f"}, + {file = "django-jinja-2.11.0.tar.gz", hash = "sha256:47c06d3271e6b2f27d3596278af517bfe2e19c1eb36ae1c0b1cc302d7f0259af"}, + {file = "django_jinja-2.11.0-py3-none-any.whl", hash = "sha256:cc4c72246a6e346aa0574e0c56c3e534c1a20ef47b8476f05d7287781f69a0a9"}, ] [package.dependencies] -django = ">=2.2" +django = ">=3.2" jinja2 = ">=3" [[package]] name = "django-picklefield" -version = "3.1" +version = "3.2" description = "Pickled object field for Django" -category = "main" optional = false python-versions = ">=3" files = [ - {file = "django-picklefield-3.1.tar.gz", hash = "sha256:c786cbeda78d6def2b43bff4840d19787809c8909f7ad683961703060398d356"}, - {file = "django_picklefield-3.1-py3-none-any.whl", hash = "sha256:d77c504df7311e8ec14e8b779f10ca6fec74de6c7f8e2c136e1ef60cf955125d"}, + {file = "django-picklefield-3.2.tar.gz", hash = "sha256:aa463f5d79d497dbe789f14b45180f00a51d0d670067d0729f352a3941cdfa4d"}, + {file = "django_picklefield-3.2-py3-none-any.whl", hash = "sha256:e9a73539d110f69825d9320db18bcb82e5189ff48dbed41821c026a20497764c"}, ] [package.dependencies] @@ -927,7 +1068,6 @@ tests = ["tox"] name = "django-prometheus" version = "2.3.1" description = "Django middlewares to monitor your application with Prometheus.io." -category = "main" optional = false python-versions = "*" files = [ @@ -940,14 +1080,13 @@ prometheus-client = ">=0.7" [[package]] name = "django-redis" -version = "5.3.0" +version = "5.4.0" description = "Full featured redis cache backend for Django." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "django-redis-5.3.0.tar.gz", hash = "sha256:8bc5793ec06b28ea802aad85ec437e7646511d4e571e07ccad19cfed8b9ddd44"}, - {file = "django_redis-5.3.0-py3-none-any.whl", hash = "sha256:2d8660d39f586c41c9907d5395693c477434141690fd7eca9d32376af00b0aac"}, + {file = "django-redis-5.4.0.tar.gz", hash = "sha256:6a02abaa34b0fea8bf9b707d2c363ab6adc7409950b2db93602e6cb292818c42"}, + {file = "django_redis-5.4.0-py3-none-any.whl", hash = "sha256:ebc88df7da810732e2af9987f7f426c96204bf89319df4c6da6ca9a2942edd5b"}, ] [package.dependencies] @@ -957,16 +1096,32 @@ redis = ">=3,<4.0.0 || >4.0.0,<4.0.1 || >4.0.1" [package.extras] hiredis = ["redis[hiredis] (>=3,!=4.0.0,!=4.0.1)"] +[[package]] +name = "django-silk" +version = "5.1.0" +description = "Silky smooth profiling for the Django Framework" +optional = false +python-versions = ">=3.8" +files = [ + {file = "django-silk-5.1.0.tar.gz", hash = "sha256:34abb5852315f0f3303d45b7ab4a2caa9cf670102b614dbb2ac40a5d2d5cbffb"}, + {file = "django_silk-5.1.0-py3-none-any.whl", hash = "sha256:35a2051672b0be86af4ce734a0df0b6674c8c63f2df730b3756ec6e52923707d"}, +] + +[package.dependencies] +autopep8 = "*" +Django = ">=3.2" +gprof2dot = ">=2017.09.19" +sqlparse = "*" + [[package]] name = "django-tables2" -version = "2.6.0" +version = "2.7.0" description = "Table/data-grid framework for Django" -category = "main" optional = false python-versions = "*" files = [ - {file = "django-tables2-2.6.0.tar.gz", hash = "sha256:479eed04007cc04bcf764a6fb7a5e3955d94b878ba7f3a4bd4edbd2f7769e08d"}, - {file = "django_tables2-2.6.0-py2.py3-none-any.whl", hash = "sha256:04f23c1181d93716c67085a3c324b449180fd0c5162ef4619acb0b2d9a166133"}, + {file = "django-tables2-2.7.0.tar.gz", hash = "sha256:4113fcc575eb438a12e83a4d4ea01452e4800d970e8bdd0e4122ac171af1900d"}, + {file = "django_tables2-2.7.0-py2.py3-none-any.whl", hash = "sha256:99e06d966ca8ac69fd74092eb45c79a280dd5ca0ccb81395d96261f62128e1af"}, ] [package.dependencies] @@ -979,7 +1134,6 @@ tablib = ["tablib"] name = "django-taggit" version = "4.0.0" description = "django-taggit is a reusable Django application for simple tagging." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -994,7 +1148,6 @@ Django = ">=3.2" name = "django-timezone-field" version = "5.1" description = "A Django app providing DB, form, and REST framework fields for zoneinfo and pytz timezone objects." -category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -1004,19 +1157,18 @@ files = [ [package.dependencies] "backports.zoneinfo" = {version = ">=0.2.1,<0.3.0", markers = "python_version < \"3.9\""} -Django = ">=2.2,<3.0.0 || >=3.2.0,<5.0" +Django = ">=2.2,<3.0.dev0 || >=3.2.dev0,<5.0" pytz = "*" [[package]] name = "django-tree-queries" -version = "0.15.0" +version = "0.17.0" description = "Tree queries with explicit opt-in, without configurability" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "django_tree_queries-0.15.0-py3-none-any.whl", hash = "sha256:cf11340de59d3122919fde46e99966bad40ff942df768d683383b111554134a1"}, - {file = "django_tree_queries-0.15.0.tar.gz", hash = "sha256:0e994c2a4601c021a115a397ec8d0ff7d5e614fae95947f72126e6a419c60f08"}, + {file = "django_tree_queries-0.17.0-py3-none-any.whl", hash = "sha256:df62cc7daa7a766483a8ae11618ff7649d74425b5d245e9644526f2dd2f51af0"}, + {file = "django_tree_queries-0.17.0.tar.gz", hash = "sha256:f115cf6756c55fde56bb876d5b5aa1b2bd33ae3d6e2949c3176ef0b4fb64c532"}, ] [package.extras] @@ -1026,7 +1178,6 @@ tests = ["coverage"] name = "django-webserver" version = "1.2.0" description = "Django management commands for production webservers" -category = "main" optional = false python-versions = "*" files = [ @@ -1046,25 +1197,23 @@ waitress = ["waitress"] [[package]] name = "djangorestframework" -version = "3.14.0" +version = "3.15.1" description = "Web APIs for Django, made easy." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "djangorestframework-3.14.0-py3-none-any.whl", hash = "sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08"}, - {file = "djangorestframework-3.14.0.tar.gz", hash = "sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8"}, + {file = "djangorestframework-3.15.1-py3-none-any.whl", hash = "sha256:3ccc0475bce968608cf30d07fb17d8e52d1d7fc8bfe779c905463200750cbca6"}, + {file = "djangorestframework-3.15.1.tar.gz", hash = "sha256:f88fad74183dfc7144b2756d0d2ac716ea5b4c7c9840995ac3bfd8ec034333c1"}, ] [package.dependencies] +"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} django = ">=3.0" -pytz = "*" [[package]] name = "drf-react-template-framework" version = "0.0.17" description = "Django REST Framework plugin that creates form schemas for react-jsonschema-form" -category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -1077,14 +1226,13 @@ djangorestframework = ">=3.12.0,<4.0.0" [[package]] name = "drf-spectacular" -version = "0.26.3" +version = "0.26.5" description = "Sane and flexible OpenAPI 3 schema generation for Django REST framework" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "drf-spectacular-0.26.3.tar.gz", hash = "sha256:b907a72a0244e5dcfeca625e9632cd8ebccdbe2cb528b7c1de1191708be6f31e"}, - {file = "drf_spectacular-0.26.3-py3-none-any.whl", hash = "sha256:1d84ac70522baaadd6d84a25ce5fe5ea50cfcba0387856689f98ac536f14aa32"}, + {file = "drf-spectacular-0.26.5.tar.gz", hash = "sha256:aee55330a774ba8a9cbdb125714d1c9ee05a8aafd3ce3be8bfd26527649aeb44"}, + {file = "drf_spectacular-0.26.5-py3-none-any.whl", hash = "sha256:c0002a820b11771fdbf37853deb371947caf0159d1afeeffe7598e964bc1db94"}, ] [package.dependencies] @@ -1102,14 +1250,13 @@ sidecar = ["drf-spectacular-sidecar"] [[package]] name = "drf-spectacular-sidecar" -version = "2023.10.1" +version = "2024.5.1" description = "Serve self-contained distribution builds of Swagger UI and Redoc with Django" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "drf-spectacular-sidecar-2023.10.1.tar.gz", hash = "sha256:546a83c173589715e530fad211af60cbcda2db54eb9e0935d44251639332af6d"}, - {file = "drf_spectacular_sidecar-2023.10.1-py3-none-any.whl", hash = "sha256:3d042a6772512f4d238f0385d3430acf5f669f595fd0be2641fe6bbfb4c7b376"}, + {file = "drf_spectacular_sidecar-2024.5.1-py3-none-any.whl", hash = "sha256:089fdef46b520b7b1c8a497a398cde9336c3f20b115835baeb158dc4138d743d"}, + {file = "drf_spectacular_sidecar-2024.5.1.tar.gz", hash = "sha256:1ecfbe86174461e3cf78a9cd49f69aa8d9e0710cb5e8b35107d3f8cc0f380c21"}, ] [package.dependencies] @@ -1117,24 +1264,50 @@ Django = ">=2.2" [[package]] name = "emoji" -version = "2.8.0" +version = "2.11.1" description = "Emoji for Python" -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" files = [ - {file = "emoji-2.8.0-py2.py3-none-any.whl", hash = "sha256:a8468fd836b7ecb6d1eac054c9a591701ce0ccd6c6f7779ad71b66f76664df90"}, - {file = "emoji-2.8.0.tar.gz", hash = "sha256:8d8b5dec3c507444b58890e598fc895fcec022b3f5acb49497c6ccc5208b8b00"}, + {file = "emoji-2.11.1-py2.py3-none-any.whl", hash = "sha256:b7ba25299bbf520cc8727848ae66b986da32aee27dc2887eaea2bff07226ce49"}, + {file = "emoji-2.11.1.tar.gz", hash = "sha256:062ff0b3154b6219143f8b9f4b3e5c64c35bc2b146e6e2349ab5f29e218ce1ee"}, ] [package.extras] dev = ["coverage", "coveralls", "pytest"] +[[package]] +name = "exceptiongroup" +version = "1.2.1" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, + {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "executing" +version = "2.0.1" +description = "Get the currently executing AST node of a frame, and other information" +optional = false +python-versions = ">=3.5" +files = [ + {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"}, + {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"}, +] + +[package.extras] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] + [[package]] name = "flake8" version = "5.0.4" description = "the modular source code checker: pep8 pyflakes and co" -category = "dev" optional = false python-versions = ">=3.6.1" files = [ @@ -1149,20 +1322,19 @@ pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "future" -version = "0.18.3" +version = "1.0.0" description = "Clean single-source support for Python 3 and 2" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ - {file = "future-0.18.3.tar.gz", hash = "sha256:34a17436ed1e96697a86f9de3d15a3b0be01d8bc8de9c1dffd59fb8234ed5307"}, + {file = "future-1.0.0-py3-none-any.whl", hash = "sha256:929292d34f5872e70396626ef385ec22355a1fae8ad29e1a734c3e43f9fbc216"}, + {file = "future-1.0.0.tar.gz", hash = "sha256:bd2968309307861edae1458a4f8a4f3598c03be43b97521076aebf5d94c07b05"}, ] [[package]] name = "ghp-import" version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." -category = "dev" optional = false python-versions = "*" files = [ @@ -1180,7 +1352,6 @@ dev = ["flake8", "markdown", "twine", "wheel"] name = "gitdb" version = "4.0.11" description = "Git Object Database" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1193,27 +1364,37 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.40" +version = "3.1.43" description = "GitPython is a Python library used to interact with Git repositories" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.40-py3-none-any.whl", hash = "sha256:cf14627d5a8049ffbf49915732e5eddbe8134c3bdb9d476e6182b676fc573f8a"}, - {file = "GitPython-3.1.40.tar.gz", hash = "sha256:22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4"}, + {file = "GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff"}, + {file = "GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c"}, ] [package.dependencies] gitdb = ">=4.0.1,<5" [package.extras] -test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-instafail", "pytest-subtests", "pytest-sugar"] +doc = ["sphinx (==4.3.2)", "sphinx-autodoc-typehints", "sphinx-rtd-theme", "sphinxcontrib-applehelp (>=1.0.2,<=1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (>=2.0.0,<=2.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)"] +test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions"] + +[[package]] +name = "gprof2dot" +version = "2022.7.29" +description = "Generate a dot graph from the output of several profilers." +optional = false +python-versions = ">=2.7" +files = [ + {file = "gprof2dot-2022.7.29-py2.py3-none-any.whl", hash = "sha256:f165b3851d3c52ee4915eb1bd6cca571e5759823c2cd0f71a79bda93c2dc85d6"}, + {file = "gprof2dot-2022.7.29.tar.gz", hash = "sha256:45b4d298bd36608fccf9511c3fd88a773f7a1abc04d6cd39445b11ba43133ec5"}, +] [[package]] name = "graphene" version = "2.1.9" description = "GraphQL Framework for Python" -category = "main" optional = false python-versions = "*" files = [ @@ -1236,7 +1417,6 @@ test = ["coveralls", "fastdiff (==0.2.0)", "iso8601", "mock", "promise", "pytest name = "graphene-django" version = "2.16.0" description = "Graphene Django integration" -category = "main" optional = false python-versions = "*" files = [ @@ -1261,7 +1441,6 @@ test = ["coveralls", "django-filter (>=2)", "djangorestframework (>=3.6.3)", "mo name = "graphene-django-optimizer" version = "0.8.0" description = "Optimize database access inside graphene queries." -category = "main" optional = false python-versions = "*" files = [ @@ -1272,7 +1451,6 @@ files = [ name = "graphql-core" version = "2.3.2" description = "GraphQL implementation for Python" -category = "main" optional = false python-versions = "*" files = [ @@ -1293,7 +1471,6 @@ test = ["coveralls (==1.11.1)", "cython (==0.29.17)", "gevent (==1.5.0)", "pyann name = "graphql-relay" version = "2.0.1" description = "Relay implementation for Python" -category = "main" optional = false python-versions = "*" files = [ @@ -1308,75 +1485,142 @@ six = ">=1.12" [[package]] name = "griffe" -version = "0.38.0" +version = "0.45.2" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "griffe-0.38.0-py3-none-any.whl", hash = "sha256:6a5bc457320e8e199006aa5fbb03e162f5e21abe31aa6221f7a5c37ea0724c71"}, - {file = "griffe-0.38.0.tar.gz", hash = "sha256:9b97487b583042b543d1e28196caee638ecd766c8c4c98135071806cb5333ac2"}, + {file = "griffe-0.45.2-py3-none-any.whl", hash = "sha256:297ec8530d0c68e5b98ff86fb588ebc3aa3559bb5dc21f3caea8d9542a350133"}, + {file = "griffe-0.45.2.tar.gz", hash = "sha256:83ce7dcaafd8cb7f43cbf1a455155015a1eb624b1ffd93249e5e1c4a22b2fdb2"}, ] [package.dependencies] +astunparse = {version = ">=1.6", markers = "python_version < \"3.9\""} colorama = ">=0.4" +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "1.0.5" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, + {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<0.26.0)"] + +[[package]] +name = "httpx" +version = "0.27.0" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, + {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + [[package]] name = "idna" -version = "3.4" +version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] [[package]] name = "importlib-metadata" -version = "6.8.0" +version = "4.13.0" description = "Read metadata from Python packages" -category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, - {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, + {file = "importlib_metadata-4.13.0-py3-none-any.whl", hash = "sha256:8a8a81bcf996e74fee46f0d16bd3eaa382a7eb20fd82445c3ad11f4090334116"}, + {file = "importlib_metadata-4.13.0.tar.gz", hash = "sha256:dd0173e8f150d6815e098fd354f6414b0f079af4644ddfe90c71e2fc6174346d"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] +testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] [[package]] name = "importlib-resources" -version = "5.13.0" +version = "6.4.0" description = "Read resources from Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-5.13.0-py3-none-any.whl", hash = "sha256:9f7bd0c97b79972a6cce36a366356d16d5e13b09679c11a58f1014bfdf8e64b2"}, - {file = "importlib_resources-5.13.0.tar.gz", hash = "sha256:82d5c6cca930697dbbd86c93333bb2c2e72861d4789a11c2662b933e5ad2b528"}, + {file = "importlib_resources-6.4.0-py3-none-any.whl", hash = "sha256:50d10f043df931902d4194ea07ec57960f66a80449ff867bfe782b4c486ba78c"}, + {file = "importlib_resources-6.4.0.tar.gz", hash = "sha256:cdb2b453b8046ca4e3798eb1d84f3cce1446a0e8e7b5ef4efb600f19fc398145"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["jaraco.test (>=5.4)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "zipp (>=3.17)"] + +[[package]] +name = "incremental" +version = "22.10.0" +description = "\"A small library that versions your Python projects.\"" +optional = false +python-versions = "*" +files = [ + {file = "incremental-22.10.0-py2.py3-none-any.whl", hash = "sha256:b864a1f30885ee72c5ac2835a761b8fe8aa9c28b9395cacf27286602688d3e51"}, + {file = "incremental-22.10.0.tar.gz", hash = "sha256:912feeb5e0f7e0188e6f42241d2f450002e11bbc0937c65865045854c24c0bd0"}, +] + +[package.extras] +mypy = ["click (>=6.0)", "mypy (==0.812)", "twisted (>=16.4.0)"] +scripts = ["click (>=6.0)", "twisted (>=16.4.0)"] [[package]] name = "inflection" version = "0.5.1" description = "A port of Ruby on Rails inflector to Python" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1388,7 +1632,6 @@ files = [ name = "invoke" version = "2.2.0" description = "Pythonic task execution" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1396,34 +1639,102 @@ files = [ {file = "invoke-2.2.0.tar.gz", hash = "sha256:ee6cbb101af1a859c7fe84f2a264c059020b0cb7fe3535f9424300ab568f6bd5"}, ] +[[package]] +name = "ipython" +version = "8.12.3" +description = "IPython: Productive Interactive Computing" +optional = false +python-versions = ">=3.8" +files = [ + {file = "ipython-8.12.3-py3-none-any.whl", hash = "sha256:b0340d46a933d27c657b211a329d0be23793c36595acf9e6ef4164bc01a1804c"}, + {file = "ipython-8.12.3.tar.gz", hash = "sha256:3910c4b54543c2ad73d06579aa771041b7d5707b033bd488669b4cf544e3b363"}, +] + +[package.dependencies] +appnope = {version = "*", markers = "sys_platform == \"darwin\""} +backcall = "*" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +decorator = "*" +jedi = ">=0.16" +matplotlib-inline = "*" +pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} +pickleshare = "*" +prompt-toolkit = ">=3.0.30,<3.0.37 || >3.0.37,<3.1.0" +pygments = ">=2.4.0" +stack-data = "*" +traitlets = ">=5" +typing-extensions = {version = "*", markers = "python_version < \"3.10\""} + +[package.extras] +all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] +black = ["black"] +doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] +kernel = ["ipykernel"] +nbconvert = ["nbconvert"] +nbformat = ["nbformat"] +notebook = ["ipywidgets", "notebook"] +parallel = ["ipyparallel"] +qtconsole = ["qtconsole"] +test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] +test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] + [[package]] name = "isort" -version = "5.12.0" +version = "5.13.2" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false python-versions = ">=3.8.0" files = [ - {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, - {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, +] + +[package.extras] +colors = ["colorama (>=0.4.6)"] + +[[package]] +name = "jdiff" +version = "0.0.6" +description = "A light-weight library to compare structured output from network devices show commands." +optional = false +python-versions = ">=3.8,<4.0" +files = [ + {file = "jdiff-0.0.6-py3-none-any.whl", hash = "sha256:346798820be11ae2485ce2a29eb9a9cc0ddaa23388319566d367be18730cbaa8"}, + {file = "jdiff-0.0.6.tar.gz", hash = "sha256:b42d26947d24fe7c297c8e3d38709b6e78823a41dcf50417d6be916d7d49be45"}, +] + +[package.dependencies] +deepdiff = ">=5.5.0,<7.0" +jmespath = ">=1.0.1,<2.0.0" + +[[package]] +name = "jedi" +version = "0.19.1" +description = "An autocompletion tool for Python that can be used for text editors." +optional = false +python-versions = ">=3.6" +files = [ + {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, + {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, ] +[package.dependencies] +parso = ">=0.8.3,<0.9.0" + [package.extras] -colors = ["colorama (>=0.4.3)"] -pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] -plugins = ["setuptools"] -requirements-deprecated-finder = ["pip-api", "pipreqs"] +docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] name = "jinja2" -version = "3.1.2" +version = "3.1.4" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [package.dependencies] @@ -1432,16 +1743,26 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "jmespath" +version = "1.0.1" +description = "JSON Matching Expressions" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, + {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, +] + [[package]] name = "jsonschema" -version = "4.18.6" +version = "4.22.0" description = "An implementation of JSON Schema validation for Python" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.18.6-py3-none-any.whl", hash = "sha256:dc274409c36175aad949c68e5ead0853aaffbe8e88c830ae66bb3c7a1728ad2d"}, - {file = "jsonschema-4.18.6.tar.gz", hash = "sha256:ce71d2f8c7983ef75a756e568317bf54bc531dc3ad7e66a128eae0d51623d8a3"}, + {file = "jsonschema-4.22.0-py3-none-any.whl", hash = "sha256:ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802"}, + {file = "jsonschema-4.22.0.tar.gz", hash = "sha256:5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7"}, ] [package.dependencies] @@ -1458,14 +1779,13 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-specifications" -version = "2023.11.1" +version = "2023.12.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema_specifications-2023.11.1-py3-none-any.whl", hash = "sha256:f596778ab612b3fd29f72ea0d990393d0540a5aab18bf0407a46632eab540779"}, - {file = "jsonschema_specifications-2023.11.1.tar.gz", hash = "sha256:c9b234904ffe02f079bf91b14d79987faa685fd4b39c377a0996954c0090b9ca"}, + {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, + {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, ] [package.dependencies] @@ -1474,21 +1794,19 @@ referencing = ">=0.31.0" [[package]] name = "junos-eznc" -version = "2.6.8" +version = "2.7.1" description = "Junos 'EZ' automation for non-programmers" -category = "main" optional = false -python-versions = ">=3.5, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "junos-eznc-2.6.8.tar.gz", hash = "sha256:80772346552225b78b6e9812bc791f67735b7e76e753dea5b7cfe888ef40e0a1"}, - {file = "junos_eznc-2.6.8-py2.py3-none-any.whl", hash = "sha256:0a62b1358d69a1eb8cdf13fee777e91b850da44a3ecf4b02c75995f5bde66f21"}, + {file = "junos-eznc-2.7.1.tar.gz", hash = "sha256:371f0298bf03e0cb4c017c43f6f4122263584eda0d690d0112e93f13daae41ac"}, + {file = "junos_eznc-2.7.1-py3-none-any.whl", hash = "sha256:8a7918faa8f0570341cac64c1210c1cd3e3542162d1e7449c3364f8d805716b2"}, ] [package.dependencies] jinja2 = ">=2.7.1" lxml = ">=3.2.4" -ncclient = "0.6.13" -paramiko = ">=1.15.2" +ncclient = ">=0.6.15" pyparsing = "*" pyserial = "*" PyYAML = ">=5.1" @@ -1499,14 +1817,13 @@ yamlordereddictloader = "*" [[package]] name = "kombu" -version = "5.3.4" +version = "5.3.7" description = "Messaging library for Python." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "kombu-5.3.4-py3-none-any.whl", hash = "sha256:63bb093fc9bb80cfb3a0972336a5cec1fa7ac5f9ef7e8237c6bf8dda9469313e"}, - {file = "kombu-5.3.4.tar.gz", hash = "sha256:0bb2e278644d11dea6272c17974a3dbb9688a949f3bb60aeb5b791329c44fadc"}, + {file = "kombu-5.3.7-py3-none-any.whl", hash = "sha256:5634c511926309c7f9789f1433e9ed402616b56836ef9878f01bd59267b4c7a9"}, + {file = "kombu-5.3.7.tar.gz", hash = "sha256:011c4cd9a355c14a1de8d35d257314a1d2456d52b7140388561acac3cf1a97bf"}, ] [package.dependencies] @@ -1525,190 +1842,189 @@ mongodb = ["pymongo (>=4.1.1)"] msgpack = ["msgpack"] pyro = ["pyro4"] qpid = ["qpid-python (>=0.26)", "qpid-tools (>=0.26)"] -redis = ["redis (>=4.5.2,!=4.5.5,<6.0.0)"] +redis = ["redis (>=4.5.2,!=4.5.5,!=5.0.2)"] slmq = ["softlayer-messaging (>=1.0.3)"] sqlalchemy = ["sqlalchemy (>=1.4.48,<2.1)"] sqs = ["boto3 (>=1.26.143)", "pycurl (>=7.43.0.5)", "urllib3 (>=1.26.16)"] yaml = ["PyYAML (>=3.10)"] zookeeper = ["kazoo (>=2.8.0)"] -[[package]] -name = "lazy-object-proxy" -version = "1.9.0" -description = "A fast and thorough lazy object proxy." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, -] - [[package]] name = "lxml" -version = "4.9.3" +version = "5.2.2" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" -files = [ - {file = "lxml-4.9.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c"}, - {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d"}, - {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef"}, - {file = "lxml-4.9.3-cp27-cp27m-win32.whl", hash = "sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7"}, - {file = "lxml-4.9.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1"}, - {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb"}, - {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e"}, - {file = "lxml-4.9.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76"}, - {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23"}, - {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f"}, - {file = "lxml-4.9.3-cp310-cp310-win32.whl", hash = "sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85"}, - {file = "lxml-4.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d"}, - {file = "lxml-4.9.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b"}, - {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120"}, - {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6"}, - {file = "lxml-4.9.3-cp311-cp311-win32.whl", hash = "sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305"}, - {file = "lxml-4.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc"}, - {file = "lxml-4.9.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4"}, - {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be"}, - {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13"}, - {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9"}, - {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5"}, - {file = "lxml-4.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8"}, - {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7"}, - {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2"}, - {file = "lxml-4.9.3-cp35-cp35m-win32.whl", hash = "sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d"}, - {file = "lxml-4.9.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833"}, - {file = "lxml-4.9.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584"}, - {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287"}, - {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458"}, - {file = "lxml-4.9.3-cp36-cp36m-win32.whl", hash = "sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477"}, - {file = "lxml-4.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4"}, - {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a"}, - {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02"}, - {file = "lxml-4.9.3-cp37-cp37m-win32.whl", hash = "sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f"}, - {file = "lxml-4.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa"}, - {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40"}, - {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7"}, - {file = "lxml-4.9.3-cp38-cp38-win32.whl", hash = "sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574"}, - {file = "lxml-4.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96"}, - {file = "lxml-4.9.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432"}, - {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69"}, - {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50"}, - {file = "lxml-4.9.3-cp39-cp39-win32.whl", hash = "sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2"}, - {file = "lxml-4.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2"}, - {file = "lxml-4.9.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9"}, - {file = "lxml-4.9.3.tar.gz", hash = "sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c"}, +optional = false +python-versions = ">=3.6" +files = [ + {file = "lxml-5.2.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:364d03207f3e603922d0d3932ef363d55bbf48e3647395765f9bfcbdf6d23632"}, + {file = "lxml-5.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:50127c186f191b8917ea2fb8b206fbebe87fd414a6084d15568c27d0a21d60db"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74e4f025ef3db1c6da4460dd27c118d8cd136d0391da4e387a15e48e5c975147"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981a06a3076997adf7c743dcd0d7a0415582661e2517c7d961493572e909aa1d"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aef5474d913d3b05e613906ba4090433c515e13ea49c837aca18bde190853dff"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e275ea572389e41e8b039ac076a46cb87ee6b8542df3fff26f5baab43713bca"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5b65529bb2f21ac7861a0e94fdbf5dc0daab41497d18223b46ee8515e5ad297"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:bcc98f911f10278d1daf14b87d65325851a1d29153caaf146877ec37031d5f36"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:b47633251727c8fe279f34025844b3b3a3e40cd1b198356d003aa146258d13a2"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:fbc9d316552f9ef7bba39f4edfad4a734d3d6f93341232a9dddadec4f15d425f"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:13e69be35391ce72712184f69000cda04fc89689429179bc4c0ae5f0b7a8c21b"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3b6a30a9ab040b3f545b697cb3adbf3696c05a3a68aad172e3fd7ca73ab3c835"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a233bb68625a85126ac9f1fc66d24337d6e8a0f9207b688eec2e7c880f012ec0"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:dfa7c241073d8f2b8e8dbc7803c434f57dbb83ae2a3d7892dd068d99e96efe2c"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1a7aca7964ac4bb07680d5c9d63b9d7028cace3e2d43175cb50bba8c5ad33316"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ae4073a60ab98529ab8a72ebf429f2a8cc612619a8c04e08bed27450d52103c0"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ffb2be176fed4457e445fe540617f0252a72a8bc56208fd65a690fdb1f57660b"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e290d79a4107d7d794634ce3e985b9ae4f920380a813717adf61804904dc4393"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:96e85aa09274955bb6bd483eaf5b12abadade01010478154b0ec70284c1b1526"}, + {file = "lxml-5.2.2-cp310-cp310-win32.whl", hash = "sha256:f956196ef61369f1685d14dad80611488d8dc1ef00be57c0c5a03064005b0f30"}, + {file = "lxml-5.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:875a3f90d7eb5c5d77e529080d95140eacb3c6d13ad5b616ee8095447b1d22e7"}, + {file = "lxml-5.2.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:45f9494613160d0405682f9eee781c7e6d1bf45f819654eb249f8f46a2c22545"}, + {file = "lxml-5.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b0b3f2df149efb242cee2ffdeb6674b7f30d23c9a7af26595099afaf46ef4e88"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d28cb356f119a437cc58a13f8135ab8a4c8ece18159eb9194b0d269ec4e28083"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657a972f46bbefdbba2d4f14413c0d079f9ae243bd68193cb5061b9732fa54c1"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b9ea10063efb77a965a8d5f4182806fbf59ed068b3c3fd6f30d2ac7bee734"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:07542787f86112d46d07d4f3c4e7c760282011b354d012dc4141cc12a68cef5f"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:303f540ad2dddd35b92415b74b900c749ec2010e703ab3bfd6660979d01fd4ed"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2eb2227ce1ff998faf0cd7fe85bbf086aa41dfc5af3b1d80867ecfe75fb68df3"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:1d8a701774dfc42a2f0b8ccdfe7dbc140500d1049e0632a611985d943fcf12df"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:56793b7a1a091a7c286b5f4aa1fe4ae5d1446fe742d00cdf2ffb1077865db10d"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:eb00b549b13bd6d884c863554566095bf6fa9c3cecb2e7b399c4bc7904cb33b5"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a2569a1f15ae6c8c64108a2cd2b4a858fc1e13d25846be0666fc144715e32ab"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:8cf85a6e40ff1f37fe0f25719aadf443686b1ac7652593dc53c7ef9b8492b115"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:d237ba6664b8e60fd90b8549a149a74fcc675272e0e95539a00522e4ca688b04"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0b3f5016e00ae7630a4b83d0868fca1e3d494c78a75b1c7252606a3a1c5fc2ad"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23441e2b5339bc54dc949e9e675fa35efe858108404ef9aa92f0456929ef6fe8"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2fb0ba3e8566548d6c8e7dd82a8229ff47bd8fb8c2da237607ac8e5a1b8312e5"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:79d1fb9252e7e2cfe4de6e9a6610c7cbb99b9708e2c3e29057f487de5a9eaefa"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6dcc3d17eac1df7859ae01202e9bb11ffa8c98949dcbeb1069c8b9a75917e01b"}, + {file = "lxml-5.2.2-cp311-cp311-win32.whl", hash = "sha256:4c30a2f83677876465f44c018830f608fa3c6a8a466eb223535035fbc16f3438"}, + {file = "lxml-5.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:49095a38eb333aaf44c06052fd2ec3b8f23e19747ca7ec6f6c954ffea6dbf7be"}, + {file = "lxml-5.2.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7429e7faa1a60cad26ae4227f4dd0459efde239e494c7312624ce228e04f6391"}, + {file = "lxml-5.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:50ccb5d355961c0f12f6cf24b7187dbabd5433f29e15147a67995474f27d1776"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc911208b18842a3a57266d8e51fc3cfaccee90a5351b92079beed912a7914c2"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33ce9e786753743159799fdf8e92a5da351158c4bfb6f2db0bf31e7892a1feb5"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec87c44f619380878bd49ca109669c9f221d9ae6883a5bcb3616785fa8f94c97"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08ea0f606808354eb8f2dfaac095963cb25d9d28e27edcc375d7b30ab01abbf6"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75a9632f1d4f698b2e6e2e1ada40e71f369b15d69baddb8968dcc8e683839b18"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74da9f97daec6928567b48c90ea2c82a106b2d500f397eeb8941e47d30b1ca85"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:0969e92af09c5687d769731e3f39ed62427cc72176cebb54b7a9d52cc4fa3b73"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:9164361769b6ca7769079f4d426a41df6164879f7f3568be9086e15baca61466"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d26a618ae1766279f2660aca0081b2220aca6bd1aa06b2cf73f07383faf48927"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab67ed772c584b7ef2379797bf14b82df9aa5f7438c5b9a09624dd834c1c1aaf"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:3d1e35572a56941b32c239774d7e9ad724074d37f90c7a7d499ab98761bd80cf"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:8268cbcd48c5375f46e000adb1390572c98879eb4f77910c6053d25cc3ac2c67"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e282aedd63c639c07c3857097fc0e236f984ceb4089a8b284da1c526491e3f3d"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfdc2bfe69e9adf0df4915949c22a25b39d175d599bf98e7ddf620a13678585"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4aefd911793b5d2d7a921233a54c90329bf3d4a6817dc465f12ffdfe4fc7b8fe"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:8b8df03a9e995b6211dafa63b32f9d405881518ff1ddd775db4e7b98fb545e1c"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f11ae142f3a322d44513de1018b50f474f8f736bc3cd91d969f464b5bfef8836"}, + {file = "lxml-5.2.2-cp312-cp312-win32.whl", hash = "sha256:16a8326e51fcdffc886294c1e70b11ddccec836516a343f9ed0f82aac043c24a"}, + {file = "lxml-5.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:bbc4b80af581e18568ff07f6395c02114d05f4865c2812a1f02f2eaecf0bfd48"}, + {file = "lxml-5.2.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e3d9d13603410b72787579769469af730c38f2f25505573a5888a94b62b920f8"}, + {file = "lxml-5.2.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38b67afb0a06b8575948641c1d6d68e41b83a3abeae2ca9eed2ac59892b36706"}, + {file = "lxml-5.2.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c689d0d5381f56de7bd6966a4541bff6e08bf8d3871bbd89a0c6ab18aa699573"}, + {file = "lxml-5.2.2-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:cf2a978c795b54c539f47964ec05e35c05bd045db5ca1e8366988c7f2fe6b3ce"}, + {file = "lxml-5.2.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:739e36ef7412b2bd940f75b278749106e6d025e40027c0b94a17ef7968d55d56"}, + {file = "lxml-5.2.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d8bbcd21769594dbba9c37d3c819e2d5847656ca99c747ddb31ac1701d0c0ed9"}, + {file = "lxml-5.2.2-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:2304d3c93f2258ccf2cf7a6ba8c761d76ef84948d87bf9664e14d203da2cd264"}, + {file = "lxml-5.2.2-cp36-cp36m-win32.whl", hash = "sha256:02437fb7308386867c8b7b0e5bc4cd4b04548b1c5d089ffb8e7b31009b961dc3"}, + {file = "lxml-5.2.2-cp36-cp36m-win_amd64.whl", hash = "sha256:edcfa83e03370032a489430215c1e7783128808fd3e2e0a3225deee278585196"}, + {file = "lxml-5.2.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:28bf95177400066596cdbcfc933312493799382879da504633d16cf60bba735b"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a745cc98d504d5bd2c19b10c79c61c7c3df9222629f1b6210c0368177589fb8"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b336b0416828022bfd5a2e3083e7f5ba54b96242159f83c7e3eebaec752f1716"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:4bc6cb140a7a0ad1f7bc37e018d0ed690b7b6520ade518285dc3171f7a117905"}, + {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:57f0a0bbc9868e10ebe874e9f129d2917750adf008fe7b9c1598c0fbbfdde6a6"}, + {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:60499fe961b21264e17a471ec296dcbf4365fbea611bf9e303ab69db7159ce61"}, + {file = "lxml-5.2.2-cp37-cp37m-win32.whl", hash = "sha256:d9b342c76003c6b9336a80efcc766748a333573abf9350f4094ee46b006ec18f"}, + {file = "lxml-5.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b16db2770517b8799c79aa80f4053cd6f8b716f21f8aca962725a9565ce3ee40"}, + {file = "lxml-5.2.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7ed07b3062b055d7a7f9d6557a251cc655eed0b3152b76de619516621c56f5d3"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f60fdd125d85bf9c279ffb8e94c78c51b3b6a37711464e1f5f31078b45002421"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a7e24cb69ee5f32e003f50e016d5fde438010c1022c96738b04fc2423e61706"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23cfafd56887eaed93d07bc4547abd5e09d837a002b791e9767765492a75883f"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:19b4e485cd07b7d83e3fe3b72132e7df70bfac22b14fe4bf7a23822c3a35bff5"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7ce7ad8abebe737ad6143d9d3bf94b88b93365ea30a5b81f6877ec9c0dee0a48"}, + {file = "lxml-5.2.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e49b052b768bb74f58c7dda4e0bdf7b79d43a9204ca584ffe1fb48a6f3c84c66"}, + {file = "lxml-5.2.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d14a0d029a4e176795cef99c056d58067c06195e0c7e2dbb293bf95c08f772a3"}, + {file = "lxml-5.2.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:be49ad33819d7dcc28a309b86d4ed98e1a65f3075c6acd3cd4fe32103235222b"}, + {file = "lxml-5.2.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a6d17e0370d2516d5bb9062c7b4cb731cff921fc875644c3d751ad857ba9c5b1"}, + {file = "lxml-5.2.2-cp38-cp38-win32.whl", hash = "sha256:5b8c041b6265e08eac8a724b74b655404070b636a8dd6d7a13c3adc07882ef30"}, + {file = "lxml-5.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:f61efaf4bed1cc0860e567d2ecb2363974d414f7f1f124b1df368bbf183453a6"}, + {file = "lxml-5.2.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fb91819461b1b56d06fa4bcf86617fac795f6a99d12239fb0c68dbeba41a0a30"}, + {file = "lxml-5.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d4ed0c7cbecde7194cd3228c044e86bf73e30a23505af852857c09c24e77ec5d"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54401c77a63cc7d6dc4b4e173bb484f28a5607f3df71484709fe037c92d4f0ed"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:625e3ef310e7fa3a761d48ca7ea1f9d8718a32b1542e727d584d82f4453d5eeb"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:519895c99c815a1a24a926d5b60627ce5ea48e9f639a5cd328bda0515ea0f10c"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7079d5eb1c1315a858bbf180000757db8ad904a89476653232db835c3114001"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:343ab62e9ca78094f2306aefed67dcfad61c4683f87eee48ff2fd74902447726"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:cd9e78285da6c9ba2d5c769628f43ef66d96ac3085e59b10ad4f3707980710d3"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:546cf886f6242dff9ec206331209db9c8e1643ae642dea5fdbecae2453cb50fd"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:02f6a8eb6512fdc2fd4ca10a49c341c4e109aa6e9448cc4859af5b949622715a"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:339ee4a4704bc724757cd5dd9dc8cf4d00980f5d3e6e06d5847c1b594ace68ab"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0a028b61a2e357ace98b1615fc03f76eb517cc028993964fe08ad514b1e8892d"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f90e552ecbad426eab352e7b2933091f2be77115bb16f09f78404861c8322981"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d83e2d94b69bf31ead2fa45f0acdef0757fa0458a129734f59f67f3d2eb7ef32"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a02d3c48f9bb1e10c7788d92c0c7db6f2002d024ab6e74d6f45ae33e3d0288a3"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6d68ce8e7b2075390e8ac1e1d3a99e8b6372c694bbe612632606d1d546794207"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:453d037e09a5176d92ec0fd282e934ed26d806331a8b70ab431a81e2fbabf56d"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:3b019d4ee84b683342af793b56bb35034bd749e4cbdd3d33f7d1107790f8c472"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb3942960f0beb9f46e2a71a3aca220d1ca32feb5a398656be934320804c0df9"}, + {file = "lxml-5.2.2-cp39-cp39-win32.whl", hash = "sha256:ac6540c9fff6e3813d29d0403ee7a81897f1d8ecc09a8ff84d2eea70ede1cdbf"}, + {file = "lxml-5.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:610b5c77428a50269f38a534057444c249976433f40f53e3b47e68349cca1425"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b537bd04d7ccd7c6350cdaaaad911f6312cbd61e6e6045542f781c7f8b2e99d2"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4820c02195d6dfb7b8508ff276752f6b2ff8b64ae5d13ebe02e7667e035000b9"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a09f6184f17a80897172863a655467da2b11151ec98ba8d7af89f17bf63dae"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:76acba4c66c47d27c8365e7c10b3d8016a7da83d3191d053a58382311a8bf4e1"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b128092c927eaf485928cec0c28f6b8bead277e28acf56800e972aa2c2abd7a2"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ae791f6bd43305aade8c0e22f816b34f3b72b6c820477aab4d18473a37e8090b"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a2f6a1bc2460e643785a2cde17293bd7a8f990884b822f7bca47bee0a82fc66b"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e8d351ff44c1638cb6e980623d517abd9f580d2e53bfcd18d8941c052a5a009"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bec4bd9133420c5c52d562469c754f27c5c9e36ee06abc169612c959bd7dbb07"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:55ce6b6d803890bd3cc89975fca9de1dff39729b43b73cb15ddd933b8bc20484"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8ab6a358d1286498d80fe67bd3d69fcbc7d1359b45b41e74c4a26964ca99c3f8"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:06668e39e1f3c065349c51ac27ae430719d7806c026fec462e5693b08b95696b"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9cd5323344d8ebb9fb5e96da5de5ad4ebab993bbf51674259dbe9d7a18049525"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89feb82ca055af0fe797a2323ec9043b26bc371365847dbe83c7fd2e2f181c34"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e481bba1e11ba585fb06db666bfc23dbe181dbafc7b25776156120bf12e0d5a6"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:9d6c6ea6a11ca0ff9cd0390b885984ed31157c168565702959c25e2191674a14"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3d98de734abee23e61f6b8c2e08a88453ada7d6486dc7cdc82922a03968928db"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:69ab77a1373f1e7563e0fb5a29a8440367dec051da6c7405333699d07444f511"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:34e17913c431f5ae01d8658dbf792fdc457073dcdfbb31dc0cc6ab256e664a8d"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05f8757b03208c3f50097761be2dea0aba02e94f0dc7023ed73a7bb14ff11eb0"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a520b4f9974b0a0a6ed73c2154de57cdfd0c8800f4f15ab2b73238ffed0b36e"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5e097646944b66207023bc3c634827de858aebc226d5d4d6d16f0b77566ea182"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b5e4ef22ff25bfd4ede5f8fb30f7b24446345f3e79d9b7455aef2836437bc38a"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ff69a9a0b4b17d78170c73abe2ab12084bdf1691550c5629ad1fe7849433f324"}, + {file = "lxml-5.2.2.tar.gz", hash = "sha256:bb2dc4898180bea79863d5487e5f9c7c34297414bad54bcd0f0852aee9cfdb87"}, ] [package.extras] cssselect = ["cssselect (>=0.7)"] +html-clean = ["lxml-html-clean"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (>=0.29.35)"] +source = ["Cython (>=3.0.10)"] [[package]] name = "markdown" -version = "3.3.7" -description = "Python implementation of Markdown." -category = "main" +version = "3.5.2" +description = "Python implementation of John Gruber's Markdown." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, - {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, + {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, + {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, ] [package.dependencies] importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} [package.extras] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] testing = ["coverage", "pyyaml"] [[package]] name = "markdown-it-py" version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1731,69 +2047,91 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +description = "Inline Matplotlib backend for Jupyter" +optional = false +python-versions = ">=3.8" +files = [ + {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, + {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, ] +[package.dependencies] +traitlets = "*" + [[package]] name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1805,7 +2143,6 @@ files = [ name = "mdurl" version = "0.1.2" description = "Markdown URL utilities" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1817,7 +2154,6 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1829,7 +2165,6 @@ files = [ name = "mkdocs" version = "1.5.2" description = "Project documentation with Markdown." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1859,25 +2194,24 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-imp [[package]] name = "mkdocs-autorefs" -version = "0.5.0" +version = "1.0.1" description = "Automatically link across pages in MkDocs." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_autorefs-0.5.0-py3-none-any.whl", hash = "sha256:7930fcb8ac1249f10e683967aeaddc0af49d90702af111a5e390e8b20b3d97ff"}, - {file = "mkdocs_autorefs-0.5.0.tar.gz", hash = "sha256:9a5054a94c08d28855cfab967ada10ed5be76e2bfad642302a610b252c3274c0"}, + {file = "mkdocs_autorefs-1.0.1-py3-none-any.whl", hash = "sha256:aacdfae1ab197780fb7a2dac92ad8a3d8f7ca8049a9cbe56a4218cd52e8da570"}, + {file = "mkdocs_autorefs-1.0.1.tar.gz", hash = "sha256:f684edf847eced40b570b57846b15f0bf57fb93ac2c510450775dcf16accb971"}, ] [package.dependencies] Markdown = ">=3.3" +markupsafe = ">=2.0.1" mkdocs = ">=1.1" [[package]] name = "mkdocs-material" version = "9.1.15" description = "Documentation that simply works" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1898,21 +2232,19 @@ requests = ">=2.26" [[package]] name = "mkdocs-material-extensions" -version = "1.3" +version = "1.3.1" description = "Extension pack for Python Markdown and MkDocs Material." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material_extensions-1.3-py3-none-any.whl", hash = "sha256:0297cc48ba68a9fdd1ef3780a3b41b534b0d0df1d1181a44676fda5f464eeadc"}, - {file = "mkdocs_material_extensions-1.3.tar.gz", hash = "sha256:f0446091503acb110a7cab9349cbc90eeac51b58d1caa92a704a81ca1e24ddbd"}, + {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, + {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, ] [[package]] name = "mkdocs-version-annotations" version = "1.0.0" description = "MkDocs plugin to add custom admonitions for documenting version differences" -category = "dev" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -1924,7 +2256,6 @@ files = [ name = "mkdocstrings" version = "0.22.0" description = "Automatic documentation from sources, for MkDocs." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1951,7 +2282,6 @@ python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] name = "mkdocstrings-python" version = "1.5.2" description = "A Python handler for mkdocstrings." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1967,7 +2297,6 @@ mkdocstrings = ">=0.20" name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1979,7 +2308,6 @@ files = [ name = "napalm" version = "4.1.0" description = "Network Automation and Programmability Abstraction Layer with Multivendor support" -category = "main" optional = false python-versions = "*" files = [ @@ -2010,76 +2338,139 @@ typing-extensions = ">=4.3.0" [[package]] name = "nautobot" -version = "2.0.4" +version = "2.2.5" description = "Source of truth and network automation platform." -category = "main" optional = false -python-versions = ">=3.8,<3.12" +python-versions = "<3.12,>=3.8" files = [ - {file = "nautobot-2.0.4-py3-none-any.whl", hash = "sha256:78687b72b90b5d7a6e70399bb16183eca2e0c8f25a574ae1b5d6a6ed3b7c01c8"}, - {file = "nautobot-2.0.4.tar.gz", hash = "sha256:3589c83a1563ba4a6553862f8ae5a56ef0efbf4e6574b429a871178eb8f07512"}, + {file = "nautobot-2.2.5-py3-none-any.whl", hash = "sha256:8b4256cb5f76b13d56c754b8a04e2869bc78d6a6593b2e7aae8094073320cb49"}, + {file = "nautobot-2.2.5.tar.gz", hash = "sha256:0b0ac6aae922092dad271feccfef3efe1e1482284b23d0acbdb0c61f78227b57"}, ] [package.dependencies] celery = ">=5.3.1,<5.4.0" -Django = ">=3.2.23,<3.3.0" +Django = ">=3.2.25,<3.3.0" django-ajax-tables = ">=1.1.1,<1.2.0" -django-celery-beat = ">=2.5.0,<2.6.0" -django-celery-results = ">=2.4.0,<2.5.0" +django-celery-beat = ">=2.6.0,<2.7.0" +django-celery-results = ">=2.5.1,<2.6.0" django-constance = {version = ">=2.9.1,<2.10.0", extras = ["database"]} -django-cors-headers = ">=4.2.0,<4.3.0" +django-cors-headers = ">=4.3.1,<4.4.0" django-db-file-storage = ">=0.5.5,<0.6.0" django-extensions = ">=3.2.3,<3.3.0" -django-filter = ">=23.1,<23.2" -django-health-check = ">=3.17.0,<3.18.0" -django-jinja = ">=2.10.2,<2.11.0" +django-filter = ">=23.5,<23.6" +django-health-check = ">=3.18.1,<3.19.0" +django-jinja = ">=2.11.0,<2.12.0" django-prometheus = ">=2.3.1,<2.4.0" -django-redis = ">=5.3.0,<5.4.0" -django-tables2 = ">=2.6.0,<2.7.0" +django-redis = ">=5.4.0,<5.5.0" +django-silk = ">=5.1.0,<5.2.0" +django-tables2 = ">=2.7.0,<2.8.0" django-taggit = ">=4.0.0,<4.1.0" django-timezone-field = ">=5.1,<5.2" -django-tree-queries = ">=0.15.0,<0.16.0" +django-tree-queries = ">=0.17.0,<0.18.0" django-webserver = ">=1.2.0,<1.3.0" -djangorestframework = ">=3.14.0,<3.15.0" +djangorestframework = ">=3.15.1,<3.16.0" drf-react-template-framework = ">=0.0.17,<0.0.18" -drf-spectacular = {version = "0.26.3", extras = ["sidecar"]} -emoji = ">=2.8.0,<2.9.0" -GitPython = ">=3.1.36,<3.2.0" +drf-spectacular = {version = ">=0.26.5,<0.27.0", extras = ["sidecar"]} +emoji = ">=2.11.0,<2.12.0" +GitPython = ">=3.1.43,<3.2.0" graphene-django = ">=2.16.0,<2.17.0" graphene-django-optimizer = ">=0.8.0,<0.9.0" -Jinja2 = ">=3.1.2,<3.2.0" -jsonschema = ">=4.7.0,<4.19.0" -Markdown = ">=3.3.7,<3.4.0" -MarkupSafe = ">=2.1.3,<2.2.0" -netaddr = ">=0.8.0,<0.9.0" +Jinja2 = ">=3.1.4,<3.2.0" +jsonschema = ">=4.7.0,<5.0.0" +Markdown = ">=3.5.2,<3.6.0" +MarkupSafe = ">=2.1.5,<2.2.0" +netaddr = ">=0.10.1,<0.11.0" netutils = ">=1.6.0,<2.0.0" -packaging = ">=23.1,<23.2" -Pillow = ">=10.0.0,<10.1.0" -prometheus-client = ">=0.17.1,<0.18.0" -psycopg2-binary = ">=2.9.6,<2.10.0" -python-slugify = ">=8.0.1,<8.1.0" -pyuwsgi = ">=2.0.21,<2.1.0" +nh3 = ">=0.2.15,<0.3.0" +packaging = ">=23.1" +Pillow = ">=10.3.0,<10.4.0" +prometheus-client = ">=0.20.0,<0.21.0" +psycopg2-binary = ">=2.9.9,<2.10.0" +python-slugify = ">=8.0.3,<8.1.0" +pyuwsgi = ">=2.0.23,<2.1.0" PyYAML = ">=6.0,<6.1" -social-auth-app-django = ">=5.2.0,<5.3.0" +social-auth-app-django = ">=5.4.1,<5.5.0" svgwrite = ">=1.4.2,<1.5.0" [package.extras] -all = ["django-auth-ldap (>=4.3.0,<4.4.0)", "django-storages (>=1.13.2,<1.14.0)", "mysqlclient (>=2.2.0,<2.3.0)", "napalm (>=4.1.0,<4.2.0)", "social-auth-core[openidconnect,saml] (>=4.4.2,<4.5.0)"] -ldap = ["django-auth-ldap (>=4.3.0,<4.4.0)"] -mysql = ["mysqlclient (>=2.2.0,<2.3.0)"] +all = ["django-auth-ldap (>=4.7.0,<4.8.0)", "django-storages (>=1.14.2,<1.15.0)", "mysqlclient (>=2.2.3,<2.3.0)", "napalm (>=4.1.0,<4.2.0)", "social-auth-core[saml] (>=4.5.3,<4.6.0)"] +ldap = ["django-auth-ldap (>=4.7.0,<4.8.0)"] +mysql = ["mysqlclient (>=2.2.3,<2.3.0)"] napalm = ["napalm (>=4.1.0,<4.2.0)"] -remote-storage = ["django-storages (>=1.13.2,<1.14.0)"] -sso = ["social-auth-core[openidconnect,saml] (>=4.4.2,<4.5.0)"] +remote-storage = ["django-storages (>=1.14.2,<1.15.0)"] +sso = ["social-auth-core[saml] (>=4.5.3,<4.6.0)"] + +[[package]] +name = "nautobot-plugin-nornir" +version = "2.0.1" +description = "Nautobot Nornir plugin." +optional = false +python-versions = ">=3.8,<3.12" +files = [ + {file = "nautobot_plugin_nornir-2.0.1-py3-none-any.whl", hash = "sha256:a74eb904d99df599c78f47ad05075677defe0b13c79e8a60ebd51d063815dc93"}, + {file = "nautobot_plugin_nornir-2.0.1.tar.gz", hash = "sha256:4893d5cb601a760620a6991de8822cf424f2964fefee360cd8e8b86b56fddbb7"}, +] + +[package.dependencies] +nautobot = ">=2.0.0,<3.0.0" +netutils = ">=1.6.0" +nornir-nautobot = ">=3.0.0,<4.0.0" + +[[package]] +name = "nautobot-secrets-providers" +version = "2.0.1" +description = "Nautobot Secrets Providers App" +optional = false +python-versions = ">=3.8,<3.12" +files = [ + {file = "nautobot_secrets_providers-2.0.1-py3-none-any.whl", hash = "sha256:67d671fccf1fbe4c62e4771ec17306ac4531b1ada65b0359390a762378661bfc"}, + {file = "nautobot_secrets_providers-2.0.1.tar.gz", hash = "sha256:f3bb1a2986dc4c9b5b40a5756d4025a9cffdcb4f0e7a6214ee610a3e527f789b"}, +] + +[package.extras] +all = ["boto3 (>=1.19.5,<1.20.0)", "hvac (>=0.11.0,<1.1.0)", "python-tss-sdk (>=1.2.0,<1.3.0)"] +aws = ["boto3 (>=1.19.5,<1.20.0)"] +hashicorp = ["hvac (>=0.11.0,<1.1.0)"] +nautobot = ["nautobot (>=2.0.0,<3.0.0)"] +thycotic = ["python-tss-sdk (>=1.2.0,<1.3.0)"] + +[[package]] +name = "nautobot-ssot" +version = "2.6.1" +description = "Nautobot Single Source of Truth" +optional = false +python-versions = "<3.12,>=3.8" +files = [ + {file = "nautobot_ssot-2.6.1-py3-none-any.whl", hash = "sha256:6368980a09ac27e7e21f0e80de0b0cae0e70a2ecf4d2340eb9250907167e8864"}, + {file = "nautobot_ssot-2.6.1.tar.gz", hash = "sha256:88f1e0387a7668636ffca3c59ff2f828b7676bfa54301b9834f34a45084e884b"}, +] + +[package.dependencies] +diffsync = ">=1.6.0,<2.0.0" +Markdown = "!=3.3.5" +nautobot = ">=2.1.0,<3.0.0" +packaging = ">=21.3,<24" +prometheus-client = ">=0.17.1" + +[package.extras] +aci = ["PyYAML (>=6)"] +all = ["Jinja2 (>=2.11.3)", "PyYAML (>=6)", "cloudvision (>=1.9.0,<2.0.0)", "cvprac (>=1.2.2,<2.0.0)", "dnspython (>=2.1.0,<3.0.0)", "ijson (>=2.5.1)", "ipfabric (>=6.0.9,<6.1.0)", "ipfabric-diagrams (>=6.0.2,<6.1.0)", "nautobot-device-lifecycle-mgmt (>=2.0.0,<3.0.0)", "netutils (>=1.0.0,<2.0.0)", "oauthlib (>=3.1.0)", "python-magic (>=0.4.15)", "pytz (>=2019.3)", "requests (>=2.21.0)", "requests-oauthlib (>=1.3.0)", "six (>=1.13.0)"] +aristacv = ["cloudvision (>=1.9.0,<2.0.0)", "cvprac (>=1.2.2,<2.0.0)"] +device42 = ["requests (>=2.21.0)"] +infoblox = ["dnspython (>=2.1.0,<3.0.0)"] +ipfabric = ["httpx (>=0.23.3)", "ipfabric (>=6.0.9,<6.1.0)", "ipfabric-diagrams (>=6.0.2,<6.1.0)", "netutils (>=1.0.0,<2.0.0)"] +nautobot-device-lifecycle-mgmt = ["nautobot-device-lifecycle-mgmt (>=2.0.0,<3.0.0)"] +pysnow = ["ijson (>=2.5.1)", "oauthlib (>=3.1.0)", "python-magic (>=0.4.15)", "pytz (>=2019.3)", "requests (>=2.21.0)", "requests-oauthlib (>=1.3.0)", "six (>=1.13.0)"] +servicenow = ["Jinja2 (>=2.11.3)", "PyYAML (>=6)", "ijson (>=2.5.1)", "oauthlib (>=3.1.0)", "python-magic (>=0.4.15)", "pytz (>=2019.3)", "requests (>=2.21.0)", "requests-oauthlib (>=1.3.0)", "six (>=1.13.0)"] [[package]] name = "ncclient" -version = "0.6.13" +version = "0.6.15" description = "Python library for NETCONF clients" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "ncclient-0.6.13.tar.gz", hash = "sha256:f9f8cea8bcbe057e1b948b9cd1b241eafb8a3f73c4981fbdfa1cc6ed69c0a7b3"}, + {file = "ncclient-0.6.15.tar.gz", hash = "sha256:6757cb41bc9160dfe47f22f5de8cf2f1adf22f27463fb50453cc415ab96773d8"}, ] [package.dependencies] @@ -2090,21 +2481,19 @@ six = "*" [[package]] name = "netaddr" -version = "0.8.0" +version = "0.10.1" description = "A network address manipulation library for Python" -category = "main" optional = false python-versions = "*" files = [ - {file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"}, - {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, + {file = "netaddr-0.10.1-py2.py3-none-any.whl", hash = "sha256:9822305b42ea1020d54fee322d43cee5622b044c07a1f0130b459bb467efcf88"}, + {file = "netaddr-0.10.1.tar.gz", hash = "sha256:f4da4222ca8c3f43c8e18a8263e5426c750a3a837fdfeccf74c68d0408eaa3bf"}, ] [[package]] name = "netmiko" version = "4.3.0" description = "Multi-vendor library to simplify legacy CLI connections to network devices" -category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -2122,29 +2511,152 @@ textfsm = ">=1.1.3" [[package]] name = "netutils" -version = "1.6.0" +version = "1.9.1" description = "Common helper functions useful in network automation." -category = "main" optional = false -python-versions = ">=3.8,<4.0" +python-versions = "<4.0,>=3.8" files = [ - {file = "netutils-1.6.0-py3-none-any.whl", hash = "sha256:e755e6141d0968f1deeb61693a4023f4f5fe1f0dde25d94ac1008f8191d8d237"}, - {file = "netutils-1.6.0.tar.gz", hash = "sha256:bd2fa691e172fe9d5c9e6fc5e2593316eb7fd2c36450454894ed13b274763d70"}, + {file = "netutils-1.9.1-py3-none-any.whl", hash = "sha256:0d6e9026cc529f365a63377159aed07769baee0bf7a7138fa86fce37b64dd9d4"}, + {file = "netutils-1.9.1.tar.gz", hash = "sha256:8ad8b5e02eb9d6692d0aaaf9c0f36da1a81f520f426a79d0e08e56cf7dbb3476"}, ] [package.extras] optionals = ["jsonschema (>=4.17.3,<5.0.0)", "napalm (>=4.0.0,<5.0.0)"] +[[package]] +name = "nh3" +version = "0.2.17" +description = "Python bindings to the ammonia HTML sanitization library." +optional = false +python-versions = "*" +files = [ + {file = "nh3-0.2.17-cp37-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:551672fd71d06cd828e282abdb810d1be24e1abb7ae2543a8fa36a71c1006fe9"}, + {file = "nh3-0.2.17-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:c551eb2a3876e8ff2ac63dff1585236ed5dfec5ffd82216a7a174f7c5082a78a"}, + {file = "nh3-0.2.17-cp37-abi3-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:66f17d78826096291bd264f260213d2b3905e3c7fae6dfc5337d49429f1dc9f3"}, + {file = "nh3-0.2.17-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0316c25b76289cf23be6b66c77d3608a4fdf537b35426280032f432f14291b9a"}, + {file = "nh3-0.2.17-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:22c26e20acbb253a5bdd33d432a326d18508a910e4dcf9a3316179860d53345a"}, + {file = "nh3-0.2.17-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:85cdbcca8ef10733bd31f931956f7fbb85145a4d11ab9e6742bbf44d88b7e351"}, + {file = "nh3-0.2.17-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40015514022af31975c0b3bca4014634fa13cb5dc4dbcbc00570acc781316dcc"}, + {file = "nh3-0.2.17-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ba73a2f8d3a1b966e9cdba7b211779ad8a2561d2dba9674b8a19ed817923f65f"}, + {file = "nh3-0.2.17-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c21bac1a7245cbd88c0b0e4a420221b7bfa838a2814ee5bb924e9c2f10a1120b"}, + {file = "nh3-0.2.17-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d7a25fd8c86657f5d9d576268e3b3767c5cd4f42867c9383618be8517f0f022a"}, + {file = "nh3-0.2.17-cp37-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:c790769152308421283679a142dbdb3d1c46c79c823008ecea8e8141db1a2062"}, + {file = "nh3-0.2.17-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:b4427ef0d2dfdec10b641ed0bdaf17957eb625b2ec0ea9329b3d28806c153d71"}, + {file = "nh3-0.2.17-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a3f55fabe29164ba6026b5ad5c3151c314d136fd67415a17660b4aaddacf1b10"}, + {file = "nh3-0.2.17-cp37-abi3-win32.whl", hash = "sha256:1a814dd7bba1cb0aba5bcb9bebcc88fd801b63e21e2450ae6c52d3b3336bc911"}, + {file = "nh3-0.2.17-cp37-abi3-win_amd64.whl", hash = "sha256:1aa52a7def528297f256de0844e8dd680ee279e79583c76d6fa73a978186ddfb"}, + {file = "nh3-0.2.17.tar.gz", hash = "sha256:40d0741a19c3d645e54efba71cb0d8c475b59135c1e3c580f879ad5514cbf028"}, +] + +[[package]] +name = "nornir" +version = "3.4.1" +description = "Pluggable multi-threaded framework with inventory management to help operate collections of devices" +optional = false +python-versions = ">=3.8,<4.0" +files = [ + {file = "nornir-3.4.1-py3-none-any.whl", hash = "sha256:db079cb95e3baf855530f4f40cb6ee93f93e1bf3cb74ac08180546adb1b987b8"}, + {file = "nornir-3.4.1.tar.gz", hash = "sha256:82a90a3478a3890bef8ad51b256fa966e6e4ca326cbe20a230918ef907cf68c3"}, +] + +[package.dependencies] +importlib-metadata = {version = ">=4,<5", markers = "python_version < \"3.10\""} +mypy_extensions = ">=1.0.0,<2.0.0" +"ruamel.yaml" = ">=0.17" + +[[package]] +name = "nornir-jinja2" +version = "0.2.0" +description = "Jinja2 plugins for nornir" +optional = false +python-versions = ">=3.6,<4.0" +files = [ + {file = "nornir_jinja2-0.2.0-py3-none-any.whl", hash = "sha256:0c446bec7a8492923d4eb9ca00fb327603b41bc35d5f0112843c048737b506b1"}, + {file = "nornir_jinja2-0.2.0.tar.gz", hash = "sha256:9ee5e725fe5543dcba4ec8b976804e9e88ecd356ea3b62bad97578cea0de1f75"}, +] + +[package.dependencies] +jinja2 = ">=2.11.2,<4" +nornir = ">=3,<4" + +[[package]] +name = "nornir-napalm" +version = "0.4.0" +description = "NAPALM's plugins for nornir" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "nornir_napalm-0.4.0-py3-none-any.whl", hash = "sha256:20a41499aecf9c4e41181b18a73b2ee3ab7763824645ac0eb80abb3973a5f17e"}, + {file = "nornir_napalm-0.4.0.tar.gz", hash = "sha256:84e0711ccbdf24bdb228042ab530bf688d6b2b8f12c65fa3cb73499c6974a9de"}, +] + +[package.dependencies] +napalm = ">=4,<5" +nornir = ">=3,<4" + +[[package]] +name = "nornir-nautobot" +version = "3.2.0" +description = "Nornir Nautobot" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "nornir_nautobot-3.2.0-py3-none-any.whl", hash = "sha256:ed0ac258eebd2e3072f1d7a0c1f964965e7c9bf8c744290bb5ea04d5800b0ef4"}, + {file = "nornir_nautobot-3.2.0.tar.gz", hash = "sha256:087ad3f6b37112e2a4ff4be64a3b5bfbddfae22057c182e57fae7084850d3d63"}, +] + +[package.dependencies] +httpx = ">=0.23.0,<=0.27.0" +netutils = ">=1.6.0,<2.0.0" +nornir = ">=3.0.0,<4.0.0" +nornir-jinja2 = ">=0.2.0,<0.3.0" +nornir-napalm = ">=0.4.0,<1.0.0" +nornir-netmiko = ">=1,<2" +nornir-utils = ">=0,<1" +pynautobot = ">=2.0.2" +requests = ">=2.25.1,<3.0.0" + +[package.extras] +mikrotik-driver = ["routeros-api (>=0.17.0,<0.18.0)"] + +[[package]] +name = "nornir-netmiko" +version = "1.0.1" +description = "Netmiko's plugins for Nornir" +optional = false +python-versions = ">=3.8,<4.0" +files = [ + {file = "nornir_netmiko-1.0.1-py3-none-any.whl", hash = "sha256:eaee2944ad386b40c0719e8ac393ac63d531f44fb9a07d660bae7de430f12834"}, + {file = "nornir_netmiko-1.0.1.tar.gz", hash = "sha256:498546df001e0e499f10c5646d1356e361ccbb165b1335b89cfe8f19765e24d7"}, +] + +[package.dependencies] +netmiko = ">=4.0.0,<5.0.0" + +[[package]] +name = "nornir-utils" +version = "0.2.0" +description = "Collection of plugins and functions for nornir that don't require external dependencies" +optional = false +python-versions = ">=3.6.2,<4.0.0" +files = [ + {file = "nornir_utils-0.2.0-py3-none-any.whl", hash = "sha256:b4c430793a74f03affd5ff2d90abc8c67a28c7ff325f48e3a01a9a44ec71b844"}, + {file = "nornir_utils-0.2.0.tar.gz", hash = "sha256:4de6aaa35e5c1a98e1c84db84a008b0b1e974dc65d88484f2dcea3e30c95fbc2"}, +] + +[package.dependencies] +colorama = ">=0.4.3,<0.5.0" +nornir = ">=3,<4" + [[package]] name = "ntc-templates" -version = "4.0.1" +version = "6.0.0" description = "TextFSM Templates for Network Devices, and Python wrapper for TextFSM's CliTable." -category = "main" optional = false -python-versions = ">=3.7,<4.0" +python-versions = "<4.0,>=3.8" files = [ - {file = "ntc_templates-4.0.1-py3-none-any.whl", hash = "sha256:4d20943fdffc70595fb2b983c6fcab926635c3e4621aaec13a9063a9a61241dd"}, - {file = "ntc_templates-4.0.1.tar.gz", hash = "sha256:5bd158592ac99e769a0b7e82e53fd714a410f912fc9e438e95cc0130cf7290a8"}, + {file = "ntc_templates-6.0.0-py3-none-any.whl", hash = "sha256:fbfbf7ebe6e1be1ad7123dfc907f353eda68a539d4f54555f8a081e8174659df"}, + {file = "ntc_templates-6.0.0.tar.gz", hash = "sha256:b1f235f017a20408057b8d43856c072b76a169ca420715217b048eff871a3a95"}, ] [package.dependencies] @@ -2154,7 +2666,6 @@ textfsm = ">=1.1.0,<2.0.0" name = "oauthlib" version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2167,28 +2678,40 @@ rsa = ["cryptography (>=3.0.0)"] signals = ["blinker (>=1.4.0)"] signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] +[[package]] +name = "ordered-set" +version = "4.1.0" +description = "An OrderedSet is a custom MutableSet that remembers its order, so that every" +optional = false +python-versions = ">=3.7" +files = [ + {file = "ordered-set-4.1.0.tar.gz", hash = "sha256:694a8e44c87657c59292ede72891eb91d34131f6531463aab3009191c77364a8"}, + {file = "ordered_set-4.1.0-py3-none-any.whl", hash = "sha256:046e1132c71fcf3330438a539928932caf51ddbc582496833e23de611de14562"}, +] + +[package.extras] +dev = ["black", "mypy", "pytest"] + [[package]] name = "packaging" -version = "23.1" +version = "23.2" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] name = "paramiko" -version = "3.3.1" +version = "3.4.0" description = "SSH2 protocol library" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "paramiko-3.3.1-py3-none-any.whl", hash = "sha256:b7bc5340a43de4287bbe22fe6de728aa2c22468b2a849615498dd944c2f275eb"}, - {file = "paramiko-3.3.1.tar.gz", hash = "sha256:6a3777a961ac86dbef375c5f5b8d50014a1a96d0fd7f054a43bc880134b0ff77"}, + {file = "paramiko-3.4.0-py3-none-any.whl", hash = "sha256:43f0b51115a896f9c00f59618023484cb3a14b98bbceab43394a39c6739b7ee7"}, + {file = "paramiko-3.4.0.tar.gz", hash = "sha256:aac08f26a31dc4dffd92821527d1682d99d52f9ef6851968114a8728f3c274d3"}, ] [package.dependencies] @@ -2201,23 +2724,36 @@ all = ["gssapi (>=1.4.1)", "invoke (>=2.0)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1 gssapi = ["gssapi (>=1.4.1)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1.8)"] invoke = ["invoke (>=2.0)"] +[[package]] +name = "parso" +version = "0.8.4" +description = "A Python Parser" +optional = false +python-versions = ">=3.6" +files = [ + {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, + {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, +] + +[package.extras] +qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] +testing = ["docopt", "pytest"] + [[package]] name = "pathspec" -version = "0.11.2" +version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, - {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] [[package]] name = "pbr" version = "6.0.0" description = "Python Build Reasonableness" -category = "dev" optional = false python-versions = ">=2.6" files = [ @@ -2225,79 +2761,121 @@ files = [ {file = "pbr-6.0.0.tar.gz", hash = "sha256:d1377122a5a00e2f940ee482999518efe16d745d423a670c27773dfbc3c9a7d9"}, ] +[[package]] +name = "pexpect" +version = "4.9.0" +description = "Pexpect allows easy control of interactive console applications." +optional = false +python-versions = "*" +files = [ + {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, + {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, +] + +[package.dependencies] +ptyprocess = ">=0.5" + +[[package]] +name = "pickleshare" +version = "0.7.5" +description = "Tiny 'shelve'-like database with concurrency support" +optional = false +python-versions = "*" +files = [ + {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, + {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, +] + [[package]] name = "pillow" -version = "10.0.1" +version = "10.3.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "Pillow-10.0.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:8f06be50669087250f319b706decf69ca71fdecd829091a37cc89398ca4dc17a"}, - {file = "Pillow-10.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:50bd5f1ebafe9362ad622072a1d2f5850ecfa44303531ff14353a4059113b12d"}, - {file = "Pillow-10.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6a90167bcca1216606223a05e2cf991bb25b14695c518bc65639463d7db722d"}, - {file = "Pillow-10.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f11c9102c56ffb9ca87134bd025a43d2aba3f1155f508eff88f694b33a9c6d19"}, - {file = "Pillow-10.0.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:186f7e04248103482ea6354af6d5bcedb62941ee08f7f788a1c7707bc720c66f"}, - {file = "Pillow-10.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0462b1496505a3462d0f35dc1c4d7b54069747d65d00ef48e736acda2c8cbdff"}, - {file = "Pillow-10.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d889b53ae2f030f756e61a7bff13684dcd77e9af8b10c6048fb2c559d6ed6eaf"}, - {file = "Pillow-10.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:552912dbca585b74d75279a7570dd29fa43b6d93594abb494ebb31ac19ace6bd"}, - {file = "Pillow-10.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:787bb0169d2385a798888e1122c980c6eff26bf941a8ea79747d35d8f9210ca0"}, - {file = "Pillow-10.0.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:fd2a5403a75b54661182b75ec6132437a181209b901446ee5724b589af8edef1"}, - {file = "Pillow-10.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2d7e91b4379f7a76b31c2dda84ab9e20c6220488e50f7822e59dac36b0cd92b1"}, - {file = "Pillow-10.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19e9adb3f22d4c416e7cd79b01375b17159d6990003633ff1d8377e21b7f1b21"}, - {file = "Pillow-10.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93139acd8109edcdeffd85e3af8ae7d88b258b3a1e13a038f542b79b6d255c54"}, - {file = "Pillow-10.0.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:92a23b0431941a33242b1f0ce6c88a952e09feeea9af4e8be48236a68ffe2205"}, - {file = "Pillow-10.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cbe68deb8580462ca0d9eb56a81912f59eb4542e1ef8f987405e35a0179f4ea2"}, - {file = "Pillow-10.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:522ff4ac3aaf839242c6f4e5b406634bfea002469656ae8358644fc6c4856a3b"}, - {file = "Pillow-10.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:84efb46e8d881bb06b35d1d541aa87f574b58e87f781cbba8d200daa835b42e1"}, - {file = "Pillow-10.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:898f1d306298ff40dc1b9ca24824f0488f6f039bc0e25cfb549d3195ffa17088"}, - {file = "Pillow-10.0.1-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:bcf1207e2f2385a576832af02702de104be71301c2696d0012b1b93fe34aaa5b"}, - {file = "Pillow-10.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5d6c9049c6274c1bb565021367431ad04481ebb54872edecfcd6088d27edd6ed"}, - {file = "Pillow-10.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28444cb6ad49726127d6b340217f0627abc8732f1194fd5352dec5e6a0105635"}, - {file = "Pillow-10.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de596695a75496deb3b499c8c4f8e60376e0516e1a774e7bc046f0f48cd620ad"}, - {file = "Pillow-10.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:2872f2d7846cf39b3dbff64bc1104cc48c76145854256451d33c5faa55c04d1a"}, - {file = "Pillow-10.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4ce90f8a24e1c15465048959f1e94309dfef93af272633e8f37361b824532e91"}, - {file = "Pillow-10.0.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ee7810cf7c83fa227ba9125de6084e5e8b08c59038a7b2c9045ef4dde61663b4"}, - {file = "Pillow-10.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b1be1c872b9b5fcc229adeadbeb51422a9633abd847c0ff87dc4ef9bb184ae08"}, - {file = "Pillow-10.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:98533fd7fa764e5f85eebe56c8e4094db912ccbe6fbf3a58778d543cadd0db08"}, - {file = "Pillow-10.0.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:764d2c0daf9c4d40ad12fbc0abd5da3af7f8aa11daf87e4fa1b834000f4b6b0a"}, - {file = "Pillow-10.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fcb59711009b0168d6ee0bd8fb5eb259c4ab1717b2f538bbf36bacf207ef7a68"}, - {file = "Pillow-10.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:697a06bdcedd473b35e50a7e7506b1d8ceb832dc238a336bd6f4f5aa91a4b500"}, - {file = "Pillow-10.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f665d1e6474af9f9da5e86c2a3a2d2d6204e04d5af9c06b9d42afa6ebde3f21"}, - {file = "Pillow-10.0.1-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:2fa6dd2661838c66f1a5473f3b49ab610c98a128fc08afbe81b91a1f0bf8c51d"}, - {file = "Pillow-10.0.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:3a04359f308ebee571a3127fdb1bd01f88ba6f6fb6d087f8dd2e0d9bff43f2a7"}, - {file = "Pillow-10.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:723bd25051454cea9990203405fa6b74e043ea76d4968166dfd2569b0210886a"}, - {file = "Pillow-10.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:71671503e3015da1b50bd18951e2f9daf5b6ffe36d16f1eb2c45711a301521a7"}, - {file = "Pillow-10.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:44e7e4587392953e5e251190a964675f61e4dae88d1e6edbe9f36d6243547ff3"}, - {file = "Pillow-10.0.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:3855447d98cced8670aaa63683808df905e956f00348732448b5a6df67ee5849"}, - {file = "Pillow-10.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ed2d9c0704f2dc4fa980b99d565c0c9a543fe5101c25b3d60488b8ba80f0cce1"}, - {file = "Pillow-10.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5bb289bb835f9fe1a1e9300d011eef4d69661bb9b34d5e196e5e82c4cb09b37"}, - {file = "Pillow-10.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a0d3e54ab1df9df51b914b2233cf779a5a10dfd1ce339d0421748232cea9876"}, - {file = "Pillow-10.0.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:2cc6b86ece42a11f16f55fe8903595eff2b25e0358dec635d0a701ac9586588f"}, - {file = "Pillow-10.0.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:ca26ba5767888c84bf5a0c1a32f069e8204ce8c21d00a49c90dabeba00ce0145"}, - {file = "Pillow-10.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f0b4b06da13275bc02adfeb82643c4a6385bd08d26f03068c2796f60d125f6f2"}, - {file = "Pillow-10.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bc2e3069569ea9dbe88d6b8ea38f439a6aad8f6e7a6283a38edf61ddefb3a9bf"}, - {file = "Pillow-10.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:8b451d6ead6e3500b6ce5c7916a43d8d8d25ad74b9102a629baccc0808c54971"}, - {file = "Pillow-10.0.1-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:32bec7423cdf25c9038fef614a853c9d25c07590e1a870ed471f47fb80b244db"}, - {file = "Pillow-10.0.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7cf63d2c6928b51d35dfdbda6f2c1fddbe51a6bc4a9d4ee6ea0e11670dd981e"}, - {file = "Pillow-10.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f6d3d4c905e26354e8f9d82548475c46d8e0889538cb0657aa9c6f0872a37aa4"}, - {file = "Pillow-10.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:847e8d1017c741c735d3cd1883fa7b03ded4f825a6e5fcb9378fd813edee995f"}, - {file = "Pillow-10.0.1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:7f771e7219ff04b79e231d099c0a28ed83aa82af91fd5fa9fdb28f5b8d5addaf"}, - {file = "Pillow-10.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:459307cacdd4138edee3875bbe22a2492519e060660eaf378ba3b405d1c66317"}, - {file = "Pillow-10.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b059ac2c4c7a97daafa7dc850b43b2d3667def858a4f112d1aa082e5c3d6cf7d"}, - {file = "Pillow-10.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6caf3cd38449ec3cd8a68b375e0c6fe4b6fd04edb6c9766b55ef84a6e8ddf2d"}, - {file = "Pillow-10.0.1.tar.gz", hash = "sha256:d72967b06be9300fed5cfbc8b5bafceec48bf7cdc7dab66b1d2549035287191d"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, + {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, + {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, + {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, + {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, + {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, + {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, + {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, + {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, + {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, + {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, + {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, + {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, + {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, + {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, + {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, ] [package.extras] docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] [[package]] name = "pkgutil-resolve-name" version = "1.3.10" description = "Resolve a name to an object." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2307,30 +2885,29 @@ files = [ [[package]] name = "platformdirs" -version = "4.0.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" +version = "4.2.2" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "platformdirs-4.0.0-py3-none-any.whl", hash = "sha256:118c954d7e949b35437270383a3f2531e99dd93cf7ce4dc8340d3356d30f173b"}, - {file = "platformdirs-4.0.0.tar.gz", hash = "sha256:cb633b2bcf10c51af60beb0ab06d2f1d69064b43abf4c185ca6b28865f3f9731"}, + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] [[package]] name = "prometheus-client" -version = "0.17.1" +version = "0.20.0" description = "Python client for the Prometheus monitoring system." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "prometheus_client-0.17.1-py3-none-any.whl", hash = "sha256:e537f37160f6807b8202a6fc4764cdd19bac5480ddd3e0d463c3002b34462101"}, - {file = "prometheus_client-0.17.1.tar.gz", hash = "sha256:21e674f39831ae3f8acde238afd9a27a37d0d2fb5a28ea094f0ce25d2cbf2091"}, + {file = "prometheus_client-0.20.0-py3-none-any.whl", hash = "sha256:cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7"}, + {file = "prometheus_client-0.20.0.tar.gz", hash = "sha256:287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89"}, ] [package.extras] @@ -2340,7 +2917,6 @@ twisted = ["twisted"] name = "promise" version = "2.3" description = "Promises/A+ implementation for Python" -category = "main" optional = false python-versions = "*" files = [ @@ -2355,14 +2931,13 @@ test = ["coveralls", "futures", "mock", "pytest (>=2.7.3)", "pytest-benchmark", [[package]] name = "prompt-toolkit" -version = "3.0.41" +version = "3.0.45" description = "Library for building powerful interactive command lines in Python" -category = "main" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.41-py3-none-any.whl", hash = "sha256:f36fe301fafb7470e86aaf90f036eef600a3210be4decf461a5b1ca8403d3cb2"}, - {file = "prompt_toolkit-3.0.41.tar.gz", hash = "sha256:941367d97fc815548822aa26c2a269fdc4eb21e9ec05fc5d447cf09bad5d75f0"}, + {file = "prompt_toolkit-3.0.45-py3-none-any.whl", hash = "sha256:a29b89160e494e3ea8622b09fa5897610b437884dcdcd054fdc1308883326c2a"}, + {file = "prompt_toolkit-3.0.45.tar.gz", hash = "sha256:07c60ee4ab7b7e90824b61afa840c8f5aad2d46b3e2e10acc33d8ecc94a49089"}, ] [package.dependencies] @@ -2372,7 +2947,6 @@ wcwidth = "*" name = "psycopg2-binary" version = "2.9.9" description = "psycopg2 - Python-PostgreSQL Database Adapter" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2402,6 +2976,7 @@ files = [ {file = "psycopg2_binary-2.9.9-cp311-cp311-win32.whl", hash = "sha256:dc4926288b2a3e9fd7b50dc6a1909a13bbdadfc67d93f3374d984e56f885579d"}, {file = "psycopg2_binary-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:b76bedd166805480ab069612119ea636f5ab8f8771e640ae103e05a4aae3e417"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8532fd6e6e2dc57bcb3bc90b079c60de896d2128c5d9d6f24a63875a95a088cf"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0605eaed3eb239e87df0d5e3c6489daae3f7388d455d0c0b4df899519c6a38d"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f8544b092a29a6ddd72f3556a9fcf249ec412e10ad28be6a0c0d948924f2212"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d423c8d8a3c82d08fe8af900ad5b613ce3632a1249fd6a223941d0735fce493"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e5afae772c00980525f6d6ecf7cbca55676296b580c0e6abb407f15f3706996"}, @@ -2410,6 +2985,8 @@ files = [ {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb16c65dcb648d0a43a2521f2f0a2300f40639f6f8c1ecbc662141e4e3e1ee07"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:911dda9c487075abd54e644ccdf5e5c16773470a6a5d3826fda76699410066fb"}, {file = "psycopg2_binary-2.9.9-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:57fede879f08d23c85140a360c6a77709113efd1c993923c59fde17aa27599fe"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-win32.whl", hash = "sha256:64cf30263844fa208851ebb13b0732ce674d8ec6a0c86a4e160495d299ba3c93"}, + {file = "psycopg2_binary-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:81ff62668af011f9a48787564ab7eded4e9fb17a4a6a74af5ffa6a457400d2ab"}, {file = "psycopg2_binary-2.9.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2293b001e319ab0d869d660a704942c9e2cce19745262a8aba2115ef41a0a42a"}, {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ef7df18daf2c4c07e2695e8cfd5ee7f748a1d54d802330985a78d2a5a6dca9"}, {file = "psycopg2_binary-2.9.9-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a602ea5aff39bb9fac6308e9c9d82b9a35c2bf288e184a816002c9fae930b77"}, @@ -2447,11 +3024,35 @@ files = [ {file = "psycopg2_binary-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:f7ae5d65ccfbebdfa761585228eb4d0df3a8b15cfb53bd953e713e09fbb12957"}, ] +[[package]] +name = "ptyprocess" +version = "0.7.0" +description = "Run a subprocess in a pseudo terminal" +optional = false +python-versions = "*" +files = [ + {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, + {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, +] + +[[package]] +name = "pure-eval" +version = "0.2.2" +description = "Safely evaluate AST nodes without side effects" +optional = false +python-versions = "*" +files = [ + {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"}, + {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"}, +] + +[package.extras] +tests = ["pytest"] + [[package]] name = "pycodestyle" version = "2.9.1" description = "Python style guide checker" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2461,39 +3062,71 @@ files = [ [[package]] name = "pycparser" -version = "2.21" +version = "2.22" description = "C parser in Python" -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] -name = "pydocstyle" -version = "6.3.0" -description = "Python docstring style checker" -category = "dev" +name = "pydantic" +version = "1.10.15" +description = "Data validation and settings management using python type hints" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pydocstyle-6.3.0-py3-none-any.whl", hash = "sha256:118762d452a49d6b05e194ef344a55822987a462831ade91ec5c06fd2169d019"}, - {file = "pydocstyle-6.3.0.tar.gz", hash = "sha256:7ce43f0c0ac87b07494eb9c0b462c0b73e6ff276807f204d6b53edc72b7e44e1"}, + {file = "pydantic-1.10.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22ed12ee588b1df028a2aa5d66f07bf8f8b4c8579c2e96d5a9c1f96b77f3bb55"}, + {file = "pydantic-1.10.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:75279d3cac98186b6ebc2597b06bcbc7244744f6b0b44a23e4ef01e5683cc0d2"}, + {file = "pydantic-1.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50f1666a9940d3d68683c9d96e39640f709d7a72ff8702987dab1761036206bb"}, + {file = "pydantic-1.10.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82790d4753ee5d00739d6cb5cf56bceb186d9d6ce134aca3ba7befb1eedbc2c8"}, + {file = "pydantic-1.10.15-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:d207d5b87f6cbefbdb1198154292faee8017d7495a54ae58db06762004500d00"}, + {file = "pydantic-1.10.15-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e49db944fad339b2ccb80128ffd3f8af076f9f287197a480bf1e4ca053a866f0"}, + {file = "pydantic-1.10.15-cp310-cp310-win_amd64.whl", hash = "sha256:d3b5c4cbd0c9cb61bbbb19ce335e1f8ab87a811f6d589ed52b0254cf585d709c"}, + {file = "pydantic-1.10.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c3d5731a120752248844676bf92f25a12f6e45425e63ce22e0849297a093b5b0"}, + {file = "pydantic-1.10.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c365ad9c394f9eeffcb30a82f4246c0006417f03a7c0f8315d6211f25f7cb654"}, + {file = "pydantic-1.10.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3287e1614393119c67bd4404f46e33ae3be3ed4cd10360b48d0a4459f420c6a3"}, + {file = "pydantic-1.10.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be51dd2c8596b25fe43c0a4a59c2bee4f18d88efb8031188f9e7ddc6b469cf44"}, + {file = "pydantic-1.10.15-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6a51a1dd4aa7b3f1317f65493a182d3cff708385327c1c82c81e4a9d6d65b2e4"}, + {file = "pydantic-1.10.15-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4e316e54b5775d1eb59187f9290aeb38acf620e10f7fd2f776d97bb788199e53"}, + {file = "pydantic-1.10.15-cp311-cp311-win_amd64.whl", hash = "sha256:0d142fa1b8f2f0ae11ddd5e3e317dcac060b951d605fda26ca9b234b92214986"}, + {file = "pydantic-1.10.15-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7ea210336b891f5ea334f8fc9f8f862b87acd5d4a0cbc9e3e208e7aa1775dabf"}, + {file = "pydantic-1.10.15-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3453685ccd7140715e05f2193d64030101eaad26076fad4e246c1cc97e1bb30d"}, + {file = "pydantic-1.10.15-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bea1f03b8d4e8e86702c918ccfd5d947ac268f0f0cc6ed71782e4b09353b26f"}, + {file = "pydantic-1.10.15-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:005655cabc29081de8243126e036f2065bd7ea5b9dff95fde6d2c642d39755de"}, + {file = "pydantic-1.10.15-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:af9850d98fc21e5bc24ea9e35dd80a29faf6462c608728a110c0a30b595e58b7"}, + {file = "pydantic-1.10.15-cp37-cp37m-win_amd64.whl", hash = "sha256:d31ee5b14a82c9afe2bd26aaa405293d4237d0591527d9129ce36e58f19f95c1"}, + {file = "pydantic-1.10.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5e09c19df304b8123938dc3c53d3d3be6ec74b9d7d0d80f4f4b5432ae16c2022"}, + {file = "pydantic-1.10.15-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7ac9237cd62947db00a0d16acf2f3e00d1ae9d3bd602b9c415f93e7a9fc10528"}, + {file = "pydantic-1.10.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:584f2d4c98ffec420e02305cf675857bae03c9d617fcfdc34946b1160213a948"}, + {file = "pydantic-1.10.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbc6989fad0c030bd70a0b6f626f98a862224bc2b1e36bfc531ea2facc0a340c"}, + {file = "pydantic-1.10.15-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d573082c6ef99336f2cb5b667b781d2f776d4af311574fb53d908517ba523c22"}, + {file = "pydantic-1.10.15-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6bd7030c9abc80134087d8b6e7aa957e43d35714daa116aced57269a445b8f7b"}, + {file = "pydantic-1.10.15-cp38-cp38-win_amd64.whl", hash = "sha256:3350f527bb04138f8aff932dc828f154847fbdc7a1a44c240fbfff1b57f49a12"}, + {file = "pydantic-1.10.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:51d405b42f1b86703555797270e4970a9f9bd7953f3990142e69d1037f9d9e51"}, + {file = "pydantic-1.10.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a980a77c52723b0dc56640ced396b73a024d4b74f02bcb2d21dbbac1debbe9d0"}, + {file = "pydantic-1.10.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67f1a1fb467d3f49e1708a3f632b11c69fccb4e748a325d5a491ddc7b5d22383"}, + {file = "pydantic-1.10.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:676ed48f2c5bbad835f1a8ed8a6d44c1cd5a21121116d2ac40bd1cd3619746ed"}, + {file = "pydantic-1.10.15-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:92229f73400b80c13afcd050687f4d7e88de9234d74b27e6728aa689abcf58cc"}, + {file = "pydantic-1.10.15-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2746189100c646682eff0bce95efa7d2e203420d8e1c613dc0c6b4c1d9c1fde4"}, + {file = "pydantic-1.10.15-cp39-cp39-win_amd64.whl", hash = "sha256:394f08750bd8eaad714718812e7fab615f873b3cdd0b9d84e76e51ef3b50b6b7"}, + {file = "pydantic-1.10.15-py3-none-any.whl", hash = "sha256:28e552a060ba2740d0d2aabe35162652c1459a0b9069fe0db7f4ee0e18e74d58"}, + {file = "pydantic-1.10.15.tar.gz", hash = "sha256:ca832e124eda231a60a041da4f013e3ff24949d94a01154b137fc2f2a43c3ffb"}, ] [package.dependencies] -snowballstemmer = ">=2.2.0" +typing-extensions = ">=4.2.0" [package.extras] -toml = ["tomli (>=1.2.3)"] +dotenv = ["python-dotenv (>=0.10.4)"] +email = ["email-validator (>=1.0.3)"] [[package]] name = "pyeapi" version = "1.0.2" description = "Python Client for eAPI" -category = "main" optional = false python-versions = "*" files = [ @@ -2511,7 +3144,6 @@ test = ["coverage", "mock"] name = "pyflakes" version = "2.5.0" description = "passive checker of Python programs" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2521,25 +3153,22 @@ files = [ [[package]] name = "pygments" -version = "2.17.1" +version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pygments-2.17.1-py3-none-any.whl", hash = "sha256:1b37f1b1e1bff2af52ecaf28cc601e2ef7077000b227a0675da25aef85784bc4"}, - {file = "pygments-2.17.1.tar.gz", hash = "sha256:e45a0e74bf9c530f564ca81b8952343be986a29f6afe7f5ad95c5f06b7bdf5e8"}, + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, ] [package.extras] -plugins = ["importlib-metadata"] windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pyjwt" version = "2.8.0" description = "JSON Web Token implementation in Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2555,24 +3184,23 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pylint" -version = "2.17.7" +version = "3.2.2" description = "python code static checker" -category = "dev" optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.8.0" files = [ - {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, - {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, + {file = "pylint-3.2.2-py3-none-any.whl", hash = "sha256:3f8788ab20bb8383e06dd2233e50f8e08949cfd9574804564803441a4946eab4"}, + {file = "pylint-3.2.2.tar.gz", hash = "sha256:d068ca1dfd735fb92a07d33cb8f288adc0f6bc1287a139ca2425366f7cbe38f8"}, ] [package.dependencies] -astroid = ">=2.15.8,<=2.17.0-dev0" +astroid = ">=3.2.2,<=3.3.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, ] -isort = ">=4.2.5,<6" +isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} @@ -2587,7 +3215,6 @@ testutils = ["gitpython (>3)"] name = "pylint-django" version = "2.5.5" description = "A Pylint plugin to help Pylint understand the Django web framework" -category = "dev" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -2604,27 +3231,25 @@ with-django = ["Django (>=2.2)"] [[package]] name = "pylint-nautobot" -version = "0.2.1" +version = "0.3.0" description = "Custom Pylint Rules for Nautobot" -category = "dev" optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.8,<3.12" files = [ - {file = "pylint_nautobot-0.2.1-py3-none-any.whl", hash = "sha256:6656cd571d6e997e6d7e37631308f1de25949a596a8309ab6d47a2e387c892c6"}, - {file = "pylint_nautobot-0.2.1.tar.gz", hash = "sha256:2872106a29236b0e31293efe4a2d02a66527c67f33437f3e2345251c4cf71b4d"}, + {file = "pylint_nautobot-0.3.0-py3-none-any.whl", hash = "sha256:91fed48d9a9f565c6aa46c679b930d64b06d014061f6e7e802e6de8b6b8e3f87"}, + {file = "pylint_nautobot-0.3.0.tar.gz", hash = "sha256:387a1d73b49186a7b325b6c1a3634e2c57ec0f2350e93494304c47073400099b"}, ] [package.dependencies] -importlib-resources = ">=5.12.0,<6.0.0" -pylint = ">=2.13,<3.0" -pyyaml = ">=6.0,<7.0" -tomli = ">=2.0.1,<3.0.0" +importlib-resources = ">=5.12.0" +pylint = ">=2.17.5" +pyyaml = ">=6.0.1" +toml = ">=0.10.2" [[package]] name = "pylint-plugin-utils" version = "0.8.2" description = "Utilities and helpers for writing Pylint plugins" -category = "dev" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -2637,18 +3262,17 @@ pylint = ">=1.7" [[package]] name = "pymdown-extensions" -version = "10.4" +version = "10.7.1" description = "Extension pack for Python Markdown." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "pymdown_extensions-10.4-py3-none-any.whl", hash = "sha256:cfc28d6a09d19448bcbf8eee3ce098c7d17ff99f7bd3069db4819af181212037"}, - {file = "pymdown_extensions-10.4.tar.gz", hash = "sha256:bc46f11749ecd4d6b71cf62396104b4a200bad3498cb0f5dad1b8502fe461a35"}, + {file = "pymdown_extensions-10.7.1-py3-none-any.whl", hash = "sha256:f5cc7000d7ff0d1ce9395d216017fa4df3dde800afb1fb72d1c7d3fd35e710f4"}, + {file = "pymdown_extensions-10.7.1.tar.gz", hash = "sha256:c70e146bdd83c744ffc766b4671999796aba18842b268510a329f7f64700d584"}, ] [package.dependencies] -markdown = ">=3.2" +markdown = ">=3.5" pyyaml = "*" [package.extras] @@ -2658,7 +3282,6 @@ extra = ["pygments (>=2.12)"] name = "pynacl" version = "1.5.0" description = "Python binding to the Networking and Cryptography (NaCl) library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2681,16 +3304,31 @@ cffi = ">=1.4.1" docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"] tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] +[[package]] +name = "pynautobot" +version = "2.1.1" +description = "Nautobot API client library" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "pynautobot-2.1.1-py3-none-any.whl", hash = "sha256:bcf56fee4733942a87dd07f956418f67580f45d08e5296c8fa3d11316c4ca419"}, + {file = "pynautobot-2.1.1.tar.gz", hash = "sha256:f01907a519689dc842f909f850737f68b53953818c97380a8101406d37e49d1b"}, +] + +[package.dependencies] +packaging = ">=23.2,<24.0" +requests = ">=2.30.0,<3.0.0" +urllib3 = ">=1.21.1,<1.27" + [[package]] name = "pyparsing" -version = "3.1.1" +version = "3.1.2" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, - {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, + {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, + {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, ] [package.extras] @@ -2700,7 +3338,6 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyserial" version = "3.5" description = "Python Serial Port Extension" -category = "main" optional = false python-versions = "*" files = [ @@ -2713,14 +3350,12 @@ cp2110 = ["hidapi"] [[package]] name = "python-crontab" -version = "3.0.0" +version = "3.1.0" description = "Python Crontab API" -category = "main" optional = false python-versions = "*" files = [ - {file = "python-crontab-3.0.0.tar.gz", hash = "sha256:79fb7465039ddfd4fb93d072d6ee0d45c1ac8bf1597f0686ea14fd4361dba379"}, - {file = "python_crontab-3.0.0-py3-none-any.whl", hash = "sha256:6d5ba3c190ec76e4d252989a1644fcb233dbf53fbc8fceeb9febe1657b9fb1d4"}, + {file = "python-crontab-3.1.0.tar.gz", hash = "sha256:f4ea1605d24533b67fa7a634ef26cb59a5f2e7954f6e677d2d7a2229959a2fc8"}, ] [package.dependencies] @@ -2732,14 +3367,13 @@ cron-schedule = ["croniter"] [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -2747,14 +3381,13 @@ six = ">=1.5" [[package]] name = "python-slugify" -version = "8.0.1" +version = "8.0.4" description = "A Python slugify application that also handles Unicode" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "python-slugify-8.0.1.tar.gz", hash = "sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27"}, - {file = "python_slugify-8.0.1-py2.py3-none-any.whl", hash = "sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395"}, + {file = "python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856"}, + {file = "python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8"}, ] [package.dependencies] @@ -2763,11 +3396,24 @@ text-unidecode = ">=1.3" [package.extras] unidecode = ["Unidecode (>=1.1.1)"] +[[package]] +name = "python-tss-sdk" +version = "1.2.2" +description = "The Delinea Secret Server Python SDK" +optional = false +python-versions = ">=3.8" +files = [ + {file = "python_tss_sdk-1.2.2-py3-none-any.whl", hash = "sha256:f69e5d9fba75b5835b9182402f8520294dd8e8abc4b4e0409080121bc06b5186"}, + {file = "python_tss_sdk-1.2.2.tar.gz", hash = "sha256:2620d0002d794d4407f85b7521d69d73f865f348238e43f61418754a6aeb520e"}, +] + +[package.dependencies] +requests = ">=2.12.5" + [[package]] name = "python3-openid" version = "3.2.0" description = "OpenID support for modern servers and consumers." -category = "main" optional = false python-versions = "*" files = [ @@ -2784,74 +3430,71 @@ postgresql = ["psycopg2"] [[package]] name = "pytz" -version = "2023.3.post1" +version = "2024.1" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, - {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, ] [[package]] name = "pyuwsgi" -version = "2.0.23" +version = "2.0.23.post0" description = "The uWSGI server" -category = "main" optional = false python-versions = "*" files = [ - {file = "pyuwsgi-2.0.23-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0bb538ef57960389d67bcd4a9e7ebb562ed13a4556a5596305ce5361e121fc4e"}, - {file = "pyuwsgi-2.0.23-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd9689290c3b4afec7d28f1c43ec60f9ee905abf66a501584454cbf6b620678"}, - {file = "pyuwsgi-2.0.23-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80e6fd3a9f49fad9404dd2622116db16990dd9c5061461fd700a82b429f0ee2b"}, - {file = "pyuwsgi-2.0.23-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4796cb1d35eff2cdae6ea01ffb26d2ec0ddf5c692d9f4bf5a28cab61baf78f4"}, - {file = "pyuwsgi-2.0.23-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:366dbc57eaee7b37f3e1c4039fcd7ba2a5693579e17ba07704038ffa28a8be57"}, - {file = "pyuwsgi-2.0.23-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:40ddfcb7d972cac169e62253027f932bb047a995cfbe98398c1451b137e3cf8d"}, - {file = "pyuwsgi-2.0.23-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f4dc785d94878088fd2b4b6da7a630b5538d461b92b6a767cb56401dac1373b9"}, - {file = "pyuwsgi-2.0.23-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cbde1da759d1486d6b20938b8f03b84b4dfe4a1b7ba111c586b1eaed6cd85cdc"}, - {file = "pyuwsgi-2.0.23-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12568dbacacd02b22791b352c3e93a9307d565512a851b36483ffe4db69b711e"}, - {file = "pyuwsgi-2.0.23-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9db7b77bf6ee429da0583f36f168bcf1294195d7a4ac53b53d1f5d8ac8c2717"}, - {file = "pyuwsgi-2.0.23-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1de2f99dc4642aea7226889c76083884260920adc14a4a533660479941c6e6f2"}, - {file = "pyuwsgi-2.0.23-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fbad05b405630ddaaf8010822fc8bc553551bcf691df2d1ffbfd4d2204f9973f"}, - {file = "pyuwsgi-2.0.23-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:39107b8abaf488e890d53372bef7b80fdf350b703bbfa2f4ded1002eea31b198"}, - {file = "pyuwsgi-2.0.23-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:feb783ef451dc09cd37b2376ccc9e8ff28d3296542df0351e0a4502c8fac765c"}, - {file = "pyuwsgi-2.0.23-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ea11e270161e5cc8f6935778841f30e3226b0ee3b70185d88d8fa2bf0317bdc9"}, - {file = "pyuwsgi-2.0.23-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3608203a37ebf5580f3fc4901ae1295fd181caa7ec49d29b7dcc1864725049e"}, - {file = "pyuwsgi-2.0.23-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bf9d22dd5397a80cf91242f173c4bab0104c7c8b17d286b289a9582a30643cac"}, - {file = "pyuwsgi-2.0.23-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6505cb52b25eecf81338b9f17f4b47ec6288f3911eb65a5a9f3be03ed2ba0b97"}, - {file = "pyuwsgi-2.0.23-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:563270210d79a9e1a76ead34dec40b0ddf1491ac44e02e9d9fd41f8e08938f07"}, - {file = "pyuwsgi-2.0.23-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1883c08aa902dbeb7bd70c5ea319452ecbce49adc715ece4c4bef8c0acfb8523"}, - {file = "pyuwsgi-2.0.23-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:79641c8fccc507288b58805c0edb0540713b9fb65d445d703329606a3fbc2fab"}, - {file = "pyuwsgi-2.0.23-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:02a21ce1175599d0e9d63dc3bb576f7662e1ba3412b746bd9780708f55b35587"}, - {file = "pyuwsgi-2.0.23-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d72e622517522df0e8e04fc1f2aff0d1cafeececc44eecf6f83646f405ef474f"}, - {file = "pyuwsgi-2.0.23-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58cb2c48bfb34b73f5a7586c55d2e29e927a7ca6ca45153e9d860d380f4d6ef1"}, - {file = "pyuwsgi-2.0.23-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7684b4c97bb0d52f3e53f5f67a39241ed1ea234e4a8c351a7ea4a4cfd397909"}, - {file = "pyuwsgi-2.0.23-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:4983d2f201d14bf7ed6ec2f6e9449e046440476877e55b1cf6f165d2eb6d3cf4"}, - {file = "pyuwsgi-2.0.23-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:462dccd00ad01a33744a7c061fa2080b58e6b4c0f25cb95e8f9628a42d10f04f"}, - {file = "pyuwsgi-2.0.23-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:764e833b890a82cf94f60087147bd98d8d8769e133e1c1289cd7b8af4d4e19ee"}, - {file = "pyuwsgi-2.0.23-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:120ae908df0b006d1e88b43a3dfbb2f02212ac768d75baefc2a20cdf1b279b11"}, - {file = "pyuwsgi-2.0.23-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78d8ab2ac544a80bfb57a3019f1768e2ca327993f3a2e39aee92b0a70746f0bb"}, - {file = "pyuwsgi-2.0.23-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1e3151b5495e3b1882b07a72e040e7a0422e8e5e58ceafc4cc046428c781f86"}, - {file = "pyuwsgi-2.0.23-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56ba238ccf4e12de0bba0ee7d92e316e3acda22419e3403dc0d474420baf3d71"}, - {file = "pyuwsgi-2.0.23-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:173709af71a86d9efee16a702933fee2ee3e6ac6b7f80eee86414bab0c80838a"}, - {file = "pyuwsgi-2.0.23-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a35ab28beba766f89c7a0db6a6a0fcedb72d7c9ff3262f3f27418bf5b757602e"}, - {file = "pyuwsgi-2.0.23-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0fd1f679c4597641bb30887e9180c42dfabf4b3e7e2747425f4468fe93a17e51"}, - {file = "pyuwsgi-2.0.23-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7c8eca007320f91f4009eca578e3014a443e7f7b33dabb2454754971fd5df4c0"}, - {file = "pyuwsgi-2.0.23-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cebebc9a322f3d5caf19938114d66ff341852756511f99f1892fbc684120501"}, - {file = "pyuwsgi-2.0.23-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c8f2311699e2562670e3ce979bbb566302e7951e758ee80f77a42f1e13a2e221"}, - {file = "pyuwsgi-2.0.23-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf687febfb7f1cfcbedb07762f39279df8725e9e681a859448ee1c1e79a39180"}, - {file = "pyuwsgi-2.0.23-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b27a7dd26e134c134ba0ed17bc28209eb459709480bdc773ce7da5ecc016c81a"}, - {file = "pyuwsgi-2.0.23-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:447a2a72e4285a1617154c496005fbaf1fbf5b3cf6e81186a13e3627ed7b0994"}, - {file = "pyuwsgi-2.0.23-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a13932ba8079b627d6233c8a04c1544bbe2a9007ddeed7f68f46401b1d0c5d5d"}, - {file = "pyuwsgi-2.0.23.tar.gz", hash = "sha256:74ac3e9c641969a3073c67793773a73bd7968ddcc3fa810c5396415e80cc0df1"}, + {file = "pyuwsgi-2.0.23.post0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49dfe43726f4a71d3440f7a36eb3ba5b361e04807164d34ececda138e2dc2375"}, + {file = "pyuwsgi-2.0.23.post0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65420b185003dd5b66f41a6d1aa03d63d953a18e818bd4a013fc8e9d580f11cb"}, + {file = "pyuwsgi-2.0.23.post0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7bc7c60d8e1242b3a638754d2487c505112c642010c460442993be85f3ca9ec7"}, + {file = "pyuwsgi-2.0.23.post0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1ae2abaa47cb9c0018c790935897aec8001fb709dfac54286a37ab2e0b88dca"}, + {file = "pyuwsgi-2.0.23.post0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:af376cafca1501b2d4b8184c427c55b32c1a3dcb6070dc27115ca552898c7ff8"}, + {file = "pyuwsgi-2.0.23.post0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f56a729808ed7aa1d7973d6f900a75bc36b976b7ab6c8867064f36e34cdafd4e"}, + {file = "pyuwsgi-2.0.23.post0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4270e68bb2633b0fc132aad6d415e4e0cde67093a97e64dd84bd186264a8c083"}, + {file = "pyuwsgi-2.0.23.post0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:97c940a69242dc45658dba3330e64d809f34e33d9631547b6928fd20075b4bb9"}, + {file = "pyuwsgi-2.0.23.post0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cac396c2e8e0d199bde9bb8fc90538c82207d0c3d722d08b9a63619b41945d6"}, + {file = "pyuwsgi-2.0.23.post0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59d6a718ad42be54b2b80c8c236b728b8b83fb93438786e95f63fc259229ccd7"}, + {file = "pyuwsgi-2.0.23.post0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c38b5bb59e1bf59030f2d43a3e67aa18e6089c8e7f43e9c5f2099567466d35f4"}, + {file = "pyuwsgi-2.0.23.post0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7199009447770812056a5b417c4847bd44db1b0230d4bb64c48a4ffacd4e96f0"}, + {file = "pyuwsgi-2.0.23.post0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f361d168cf175796fe36ab6a88dee079245a2f08e587e8190a38bd1b33238fa8"}, + {file = "pyuwsgi-2.0.23.post0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:52a45e98fe746ae9c9437c5b6f0cdb6117f979c8800f09c8e4dae2997786affd"}, + {file = "pyuwsgi-2.0.23.post0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f7455976abfa1dd43b5f3376f7f04a925c16babba1c3fc6edcdd81f5c0f24383"}, + {file = "pyuwsgi-2.0.23.post0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:508f5d84cd677cecc640d0e321badc61080c40c61843cd130b32f356729a599f"}, + {file = "pyuwsgi-2.0.23.post0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcf93afec49f5cf29b0a68f4d2fb3e44a3ad1f205704ab2f41f9db47dacb8e13"}, + {file = "pyuwsgi-2.0.23.post0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a19ab0d5c43bc179a70cb079feb7804e39be6326bf98ec38808fcea5e7d44bd0"}, + {file = "pyuwsgi-2.0.23.post0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8c5283e38c4fd3130cd7384d57535d60435c63b81a41a6463f26f340efeda9de"}, + {file = "pyuwsgi-2.0.23.post0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0d9dfb79bffa552e5985385bc114ecec1d4079b95ce24796f577ef0df727da06"}, + {file = "pyuwsgi-2.0.23.post0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b531ac80155b6c839215d05f95569b34e614e97aab055072c74112b1d2a45546"}, + {file = "pyuwsgi-2.0.23.post0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:eae183104f3fa26f3d9c28fe75f2ad914e3a365103a6a66e329c0f59f9e461d4"}, + {file = "pyuwsgi-2.0.23.post0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a34ab2863ff0120c6e0e75c63c9ced462bfb4777e6b8237e4e1df60fb34af51"}, + {file = "pyuwsgi-2.0.23.post0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc18481f336be63e80fc983aaa1a040e7c69c25c3145edcf93f0e6de2f1ad0d6"}, + {file = "pyuwsgi-2.0.23.post0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245da016b424c261d148bbb83d2407aac77e6d5793cbd4e23a17f7e3a8aa061f"}, + {file = "pyuwsgi-2.0.23.post0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8de1d975be958cff9122ecc82bf393bf7f41fff6f1047e76ed972047763bbd31"}, + {file = "pyuwsgi-2.0.23.post0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d75859311605a510a6050ec622ec4beb9f2f8cce5f090e5cea70a1ff74133f8b"}, + {file = "pyuwsgi-2.0.23.post0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d3ad00212ffbb208b7146744ad3710b908734f844b5e2bf533fb09fc44726f37"}, + {file = "pyuwsgi-2.0.23.post0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:374142b106de187c4572b4441a367fa3466d9ea5aaabe475da42bb9f2202a690"}, + {file = "pyuwsgi-2.0.23.post0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:137db348bd5f585e8e5a609046d3ac9ef58483bba93de1e3c568c1a860c31b9c"}, + {file = "pyuwsgi-2.0.23.post0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52b7a837dbc8702b245481514a32c88418a42df7b5ee68d45695eba457abd3ee"}, + {file = "pyuwsgi-2.0.23.post0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfcfeb1eaca5f4dd0e6ed9194e7ec98dcb3a8ac108e8f0414ed7c28d608517ef"}, + {file = "pyuwsgi-2.0.23.post0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7887c2acc8262223ff9cdce974851da0917818c12ef3ec0f49ec11a9943731fe"}, + {file = "pyuwsgi-2.0.23.post0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:bae72689ddf8e0bdd1a974a364ed052dd19d7897f1d5c3efcf8d9010c60f56ef"}, + {file = "pyuwsgi-2.0.23.post0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9565569474f9e9f02f6fa490d96d8c5c7e3004829c01c0446cdb74c618b6a433"}, + {file = "pyuwsgi-2.0.23.post0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6ba86c6aa815635eefe7728b9b219af281a4e956bab240c5871db6c151c300a8"}, + {file = "pyuwsgi-2.0.23.post0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29ab8a02e812fbc34026ddb79f274a574c96fc488f384f320d3af37bd7edf932"}, + {file = "pyuwsgi-2.0.23.post0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4f9c0694a11d8dfbbe2814b8b242a7c4dfa143b63e01447fabce9966a90fa60"}, + {file = "pyuwsgi-2.0.23.post0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f75e45e14462cbb94fc32242378eef7bda97173de57a68a5d46e4053677a7547"}, + {file = "pyuwsgi-2.0.23.post0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e7140fc3548cd9d0f02c4511b679ba47d26593d2cceb249d2d147c9901d90022"}, + {file = "pyuwsgi-2.0.23.post0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ed348cc4c5a4964c8e8fa61ab0ef50c00f7676179a6c0cb0f55f0122db1db1c2"}, + {file = "pyuwsgi-2.0.23.post0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17a8818ec98f92e7935cf0ff56ed4f02a069362e10554df969f70fcdf78d9199"}, + {file = "pyuwsgi-2.0.23.post0.tar.gz", hash = "sha256:04ec79c4a3acad21002ebf1479050c3208605d27cc6659008df51092951eeb8e"}, ] [[package]] name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2860,6 +3503,7 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -2867,8 +3511,16 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -2885,6 +3537,7 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -2892,6 +3545,7 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -2901,7 +3555,6 @@ files = [ name = "pyyaml-env-tag" version = "0.1" description = "A custom YAML tag for referencing environment variables in YAML files. " -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2914,18 +3567,17 @@ pyyaml = "*" [[package]] name = "redis" -version = "5.0.1" +version = "5.0.4" description = "Python client for Redis database and key-value store" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "redis-5.0.1-py3-none-any.whl", hash = "sha256:ed4802971884ae19d640775ba3b03aa2e7bd5e8fb8dfaed2decce4d0fc48391f"}, - {file = "redis-5.0.1.tar.gz", hash = "sha256:0dab495cd5753069d3bc650a0dde8a8f9edde16fc5691b689a566eda58100d0f"}, + {file = "redis-5.0.4-py3-none-any.whl", hash = "sha256:7adc2835c7a9b5033b7ad8f8918d09b7344188228809c98df07af226d39dec91"}, + {file = "redis-5.0.4.tar.gz", hash = "sha256:ec31f2ed9675cc54c21ba854cfe0462e6faf1d83c8ce5944709db8a4700b9c61"}, ] [package.dependencies] -async-timeout = {version = ">=4.0.2", markers = "python_full_version <= \"3.11.2\""} +async-timeout = {version = ">=4.0.3", markers = "python_full_version < \"3.11.3\""} [package.extras] hiredis = ["hiredis (>=1.0.0)"] @@ -2933,14 +3585,13 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)" [[package]] name = "referencing" -version = "0.31.0" +version = "0.35.1" description = "JSON Referencing + Python" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.31.0-py3-none-any.whl", hash = "sha256:381b11e53dd93babb55696c71cf42aef2d36b8a150c49bf0bc301e36d536c882"}, - {file = "referencing-0.31.0.tar.gz", hash = "sha256:cc28f2c88fbe7b961a7817a0abc034c09a1e36358f82fedb4ffdf29a25398863"}, + {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, + {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, ] [package.dependencies] @@ -2949,112 +3600,101 @@ rpds-py = ">=0.7.0" [[package]] name = "regex" -version = "2023.10.3" +version = "2024.5.15" description = "Alternative regular expression module, to replace re." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "regex-2023.10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c34d4f73ea738223a094d8e0ffd6d2c1a1b4c175da34d6b0de3d8d69bee6bcc"}, - {file = "regex-2023.10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8f4e49fc3ce020f65411432183e6775f24e02dff617281094ba6ab079ef0915"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cd1bccf99d3ef1ab6ba835308ad85be040e6a11b0977ef7ea8c8005f01a3c29"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:81dce2ddc9f6e8f543d94b05d56e70d03a0774d32f6cca53e978dc01e4fc75b8"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c6b4d23c04831e3ab61717a707a5d763b300213db49ca680edf8bf13ab5d91b"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c15ad0aee158a15e17e0495e1e18741573d04eb6da06d8b84af726cfc1ed02ee"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6239d4e2e0b52c8bd38c51b760cd870069f0bdf99700a62cd509d7a031749a55"}, - {file = "regex-2023.10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4a8bf76e3182797c6b1afa5b822d1d5802ff30284abe4599e1247be4fd6b03be"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9c727bbcf0065cbb20f39d2b4f932f8fa1631c3e01fcedc979bd4f51fe051c5"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3ccf2716add72f80714b9a63899b67fa711b654be3fcdd34fa391d2d274ce767"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:107ac60d1bfdc3edb53be75e2a52aff7481b92817cfdddd9b4519ccf0e54a6ff"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:00ba3c9818e33f1fa974693fb55d24cdc8ebafcb2e4207680669d8f8d7cca79a"}, - {file = "regex-2023.10.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f0a47efb1dbef13af9c9a54a94a0b814902e547b7f21acb29434504d18f36e3a"}, - {file = "regex-2023.10.3-cp310-cp310-win32.whl", hash = "sha256:36362386b813fa6c9146da6149a001b7bd063dabc4d49522a1f7aa65b725c7ec"}, - {file = "regex-2023.10.3-cp310-cp310-win_amd64.whl", hash = "sha256:c65a3b5330b54103e7d21cac3f6bf3900d46f6d50138d73343d9e5b2900b2353"}, - {file = "regex-2023.10.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:90a79bce019c442604662d17bf69df99090e24cdc6ad95b18b6725c2988a490e"}, - {file = "regex-2023.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c7964c2183c3e6cce3f497e3a9f49d182e969f2dc3aeeadfa18945ff7bdd7051"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ef80829117a8061f974b2fda8ec799717242353bff55f8a29411794d635d964"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5addc9d0209a9afca5fc070f93b726bf7003bd63a427f65ef797a931782e7edc"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c148bec483cc4b421562b4bcedb8e28a3b84fcc8f0aa4418e10898f3c2c0eb9b"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d1f21af4c1539051049796a0f50aa342f9a27cde57318f2fc41ed50b0dbc4ac"}, - {file = "regex-2023.10.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b9ac09853b2a3e0d0082104036579809679e7715671cfbf89d83c1cb2a30f58"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ebedc192abbc7fd13c5ee800e83a6df252bec691eb2c4bedc9f8b2e2903f5e2a"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d8a993c0a0ffd5f2d3bda23d0cd75e7086736f8f8268de8a82fbc4bd0ac6791e"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:be6b7b8d42d3090b6c80793524fa66c57ad7ee3fe9722b258aec6d0672543fd0"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4023e2efc35a30e66e938de5aef42b520c20e7eda7bb5fb12c35e5d09a4c43f6"}, - {file = "regex-2023.10.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0d47840dc05e0ba04fe2e26f15126de7c755496d5a8aae4a08bda4dd8d646c54"}, - {file = "regex-2023.10.3-cp311-cp311-win32.whl", hash = "sha256:9145f092b5d1977ec8c0ab46e7b3381b2fd069957b9862a43bd383e5c01d18c2"}, - {file = "regex-2023.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:b6104f9a46bd8743e4f738afef69b153c4b8b592d35ae46db07fc28ae3d5fb7c"}, - {file = "regex-2023.10.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bff507ae210371d4b1fe316d03433ac099f184d570a1a611e541923f78f05037"}, - {file = "regex-2023.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be5e22bbb67924dea15039c3282fa4cc6cdfbe0cbbd1c0515f9223186fc2ec5f"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a992f702c9be9c72fa46f01ca6e18d131906a7180950958f766c2aa294d4b41"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7434a61b158be563c1362d9071358f8ab91b8d928728cd2882af060481244c9e"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2169b2dcabf4e608416f7f9468737583ce5f0a6e8677c4efbf795ce81109d7c"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9e908ef5889cda4de038892b9accc36d33d72fb3e12c747e2799a0e806ec841"}, - {file = "regex-2023.10.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12bd4bc2c632742c7ce20db48e0d99afdc05e03f0b4c1af90542e05b809a03d9"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bc72c231f5449d86d6c7d9cc7cd819b6eb30134bb770b8cfdc0765e48ef9c420"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bce8814b076f0ce5766dc87d5a056b0e9437b8e0cd351b9a6c4e1134a7dfbda9"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:ba7cd6dc4d585ea544c1412019921570ebd8a597fabf475acc4528210d7c4a6f"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b0c7d2f698e83f15228ba41c135501cfe7d5740181d5903e250e47f617eb4292"}, - {file = "regex-2023.10.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5a8f91c64f390ecee09ff793319f30a0f32492e99f5dc1c72bc361f23ccd0a9a"}, - {file = "regex-2023.10.3-cp312-cp312-win32.whl", hash = "sha256:ad08a69728ff3c79866d729b095872afe1e0557251da4abb2c5faff15a91d19a"}, - {file = "regex-2023.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:39cdf8d141d6d44e8d5a12a8569d5a227f645c87df4f92179bd06e2e2705e76b"}, - {file = "regex-2023.10.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4a3ee019a9befe84fa3e917a2dd378807e423d013377a884c1970a3c2792d293"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76066d7ff61ba6bf3cb5efe2428fc82aac91802844c022d849a1f0f53820502d"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe50b61bab1b1ec260fa7cd91106fa9fece57e6beba05630afe27c71259c59b"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fd88f373cb71e6b59b7fa597e47e518282455c2734fd4306a05ca219a1991b0"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ab05a182c7937fb374f7e946f04fb23a0c0699c0450e9fb02ef567412d2fa3"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dac37cf08fcf2094159922edc7a2784cfcc5c70f8354469f79ed085f0328ebdf"}, - {file = "regex-2023.10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e54ddd0bb8fb626aa1f9ba7b36629564544954fff9669b15da3610c22b9a0991"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3367007ad1951fde612bf65b0dffc8fd681a4ab98ac86957d16491400d661302"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:16f8740eb6dbacc7113e3097b0a36065a02e37b47c936b551805d40340fb9971"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:f4f2ca6df64cbdd27f27b34f35adb640b5d2d77264228554e68deda54456eb11"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:39807cbcbe406efca2a233884e169d056c35aa7e9f343d4e78665246a332f597"}, - {file = "regex-2023.10.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7eece6fbd3eae4a92d7c748ae825cbc1ee41a89bb1c3db05b5578ed3cfcfd7cb"}, - {file = "regex-2023.10.3-cp37-cp37m-win32.whl", hash = "sha256:ce615c92d90df8373d9e13acddd154152645c0dc060871abf6bd43809673d20a"}, - {file = "regex-2023.10.3-cp37-cp37m-win_amd64.whl", hash = "sha256:0f649fa32fe734c4abdfd4edbb8381c74abf5f34bc0b3271ce687b23729299ed"}, - {file = "regex-2023.10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b98b7681a9437262947f41c7fac567c7e1f6eddd94b0483596d320092004533"}, - {file = "regex-2023.10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:91dc1d531f80c862441d7b66c4505cd6ea9d312f01fb2f4654f40c6fdf5cc37a"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82fcc1f1cc3ff1ab8a57ba619b149b907072e750815c5ba63e7aa2e1163384a4"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7979b834ec7a33aafae34a90aad9f914c41fd6eaa8474e66953f3f6f7cbd4368"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef71561f82a89af6cfcbee47f0fabfdb6e63788a9258e913955d89fdd96902ab"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd829712de97753367153ed84f2de752b86cd1f7a88b55a3a775eb52eafe8a94"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00e871d83a45eee2f8688d7e6849609c2ca2a04a6d48fba3dff4deef35d14f07"}, - {file = "regex-2023.10.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:706e7b739fdd17cb89e1fbf712d9dc21311fc2333f6d435eac2d4ee81985098c"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cc3f1c053b73f20c7ad88b0d1d23be7e7b3901229ce89f5000a8399746a6e039"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6f85739e80d13644b981a88f529d79c5bdf646b460ba190bffcaf6d57b2a9863"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:741ba2f511cc9626b7561a440f87d658aabb3d6b744a86a3c025f866b4d19e7f"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e77c90ab5997e85901da85131fd36acd0ed2221368199b65f0d11bca44549711"}, - {file = "regex-2023.10.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:979c24cbefaf2420c4e377ecd1f165ea08cc3d1fbb44bdc51bccbbf7c66a2cb4"}, - {file = "regex-2023.10.3-cp38-cp38-win32.whl", hash = "sha256:58837f9d221744d4c92d2cf7201c6acd19623b50c643b56992cbd2b745485d3d"}, - {file = "regex-2023.10.3-cp38-cp38-win_amd64.whl", hash = "sha256:c55853684fe08d4897c37dfc5faeff70607a5f1806c8be148f1695be4a63414b"}, - {file = "regex-2023.10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2c54e23836650bdf2c18222c87f6f840d4943944146ca479858404fedeb9f9af"}, - {file = "regex-2023.10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:69c0771ca5653c7d4b65203cbfc5e66db9375f1078689459fe196fe08b7b4930"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ac965a998e1388e6ff2e9781f499ad1eaa41e962a40d11c7823c9952c77123e"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c0e8fae5b27caa34177bdfa5a960c46ff2f78ee2d45c6db15ae3f64ecadde14"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c56c3d47da04f921b73ff9415fbaa939f684d47293f071aa9cbb13c94afc17d"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ef1e014eed78ab650bef9a6a9cbe50b052c0aebe553fb2881e0453717573f52"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d29338556a59423d9ff7b6eb0cb89ead2b0875e08fe522f3e068b955c3e7b59b"}, - {file = "regex-2023.10.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9c6d0ced3c06d0f183b73d3c5920727268d2201aa0fe6d55c60d68c792ff3588"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:994645a46c6a740ee8ce8df7911d4aee458d9b1bc5639bc968226763d07f00fa"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:66e2fe786ef28da2b28e222c89502b2af984858091675044d93cb50e6f46d7af"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:11175910f62b2b8c055f2b089e0fedd694fe2be3941b3e2633653bc51064c528"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:06e9abc0e4c9ab4779c74ad99c3fc10d3967d03114449acc2c2762ad4472b8ca"}, - {file = "regex-2023.10.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fb02e4257376ae25c6dd95a5aec377f9b18c09be6ebdefa7ad209b9137b73d48"}, - {file = "regex-2023.10.3-cp39-cp39-win32.whl", hash = "sha256:3b2c3502603fab52d7619b882c25a6850b766ebd1b18de3df23b2f939360e1bd"}, - {file = "regex-2023.10.3-cp39-cp39-win_amd64.whl", hash = "sha256:adbccd17dcaff65704c856bd29951c58a1bd4b2b0f8ad6b826dbd543fe740988"}, - {file = "regex-2023.10.3.tar.gz", hash = "sha256:3fef4f844d2290ee0ba57addcec17eec9e3df73f10a2748485dfd6a3a188cc0f"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53"}, + {file = "regex-2024.5.15-cp310-cp310-win32.whl", hash = "sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3"}, + {file = "regex-2024.5.15-cp310-cp310-win_amd64.whl", hash = "sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68"}, + {file = "regex-2024.5.15-cp311-cp311-win32.whl", hash = "sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa"}, + {file = "regex-2024.5.15-cp311-cp311-win_amd64.whl", hash = "sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201"}, + {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014"}, + {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e"}, + {file = "regex-2024.5.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80"}, + {file = "regex-2024.5.15-cp312-cp312-win32.whl", hash = "sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe"}, + {file = "regex-2024.5.15-cp312-cp312-win_amd64.whl", hash = "sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2"}, + {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835"}, + {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850"}, + {file = "regex-2024.5.15-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741"}, + {file = "regex-2024.5.15-cp38-cp38-win32.whl", hash = "sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9"}, + {file = "regex-2024.5.15-cp38-cp38-win_amd64.whl", hash = "sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456"}, + {file = "regex-2024.5.15-cp39-cp39-win32.whl", hash = "sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694"}, + {file = "regex-2024.5.15-cp39-cp39-win_amd64.whl", hash = "sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388"}, + {file = "regex-2024.5.15.tar.gz", hash = "sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c"}, ] [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -3069,14 +3709,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-oauthlib" -version = "1.3.1" +version = "2.0.0" description = "OAuthlib authentication support for Requests." -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.4" files = [ - {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"}, - {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"}, + {file = "requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9"}, + {file = "requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36"}, ] [package.dependencies] @@ -3088,14 +3727,13 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] [[package]] name = "rich" -version = "13.7.0" +version = "13.7.1" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -category = "dev" optional = false python-versions = ">=3.7.0" files = [ - {file = "rich-13.7.0-py3-none-any.whl", hash = "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235"}, - {file = "rich-13.7.0.tar.gz", hash = "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa"}, + {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, + {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, ] [package.dependencies] @@ -3108,118 +3746,219 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rpds-py" -version = "0.13.1" +version = "0.18.1" description = "Python bindings to Rust's persistent data structures (rpds)" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.13.1-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:83feb0f682d75a09ddc11aa37ba5c07dd9b824b22915207f6176ea458474ff75"}, - {file = "rpds_py-0.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa84bbe22ffa108f91631935c28a623001e335d66e393438258501e618fb0dde"}, - {file = "rpds_py-0.13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e04f8c76b8d5c70695b4e8f1d0b391d8ef91df00ef488c6c1ffb910176459bc6"}, - {file = "rpds_py-0.13.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:032c242a595629aacace44128f9795110513ad27217b091e834edec2fb09e800"}, - {file = "rpds_py-0.13.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91276caef95556faeb4b8f09fe4439670d3d6206fee78d47ddb6e6de837f0b4d"}, - {file = "rpds_py-0.13.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d22f2cb82e0b40e427a74a93c9a4231335bbc548aed79955dde0b64ea7f88146"}, - {file = "rpds_py-0.13.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63c9e2794329ef070844ff9bfc012004aeddc0468dc26970953709723f76c8a5"}, - {file = "rpds_py-0.13.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c797ea56f36c6f248656f0223b11307fdf4a1886f3555eba371f34152b07677f"}, - {file = "rpds_py-0.13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:82dbcd6463e580bcfb7561cece35046aaabeac5a9ddb775020160b14e6c58a5d"}, - {file = "rpds_py-0.13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:736817dbbbd030a69a1faf5413a319976c9c8ba8cdcfa98c022d3b6b2e01eca6"}, - {file = "rpds_py-0.13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1f36a1e80ef4ed1996445698fd91e0d3e54738bf597c9995118b92da537d7a28"}, - {file = "rpds_py-0.13.1-cp310-none-win32.whl", hash = "sha256:4f13d3f6585bd07657a603780e99beda96a36c86acaba841f131e81393958336"}, - {file = "rpds_py-0.13.1-cp310-none-win_amd64.whl", hash = "sha256:545e94c84575057d3d5c62634611858dac859702b1519b6ffc58eca7fb1adfcf"}, - {file = "rpds_py-0.13.1-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:6bfe72b249264cc1ff2f3629be240d7d2fdc778d9d298087cdec8524c91cd11f"}, - {file = "rpds_py-0.13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edc91c50e17f5cd945d821f0f1af830522dba0c10267c3aab186dc3dbaab8def"}, - {file = "rpds_py-0.13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2eca04a365be380ca1f8fa48b334462e19e3382c0bb7386444d8ca43aa01c481"}, - {file = "rpds_py-0.13.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3e3ac5b602fea378243f993d8b707189f9061e55ebb4e56cb9fdef8166060f28"}, - {file = "rpds_py-0.13.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dfb5d2ab183c0efe5e7b8917e4eaa2e837aacafad8a69b89aa6bc81550eed857"}, - {file = "rpds_py-0.13.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d9793d46d3e6522ae58e9321032827c9c0df1e56cbe5d3de965facb311aed6aa"}, - {file = "rpds_py-0.13.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9cd935c0220d012a27c20135c140f9cdcbc6249d5954345c81bfb714071b985c"}, - {file = "rpds_py-0.13.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:37b08df45f02ff1866043b95096cbe91ac99de05936dd09d6611987a82a3306a"}, - {file = "rpds_py-0.13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ad666a904212aa9a6c77da7dce9d5170008cda76b7776e6731928b3f8a0d40fa"}, - {file = "rpds_py-0.13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8a6ad8429340e0a4de89353447c6441329def3632e7b2293a7d6e873217d3c2b"}, - {file = "rpds_py-0.13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7c40851b659d958c5245c1236e34f0d065cc53dca8d978b49a032c8e0adfda6e"}, - {file = "rpds_py-0.13.1-cp311-none-win32.whl", hash = "sha256:4145172ab59b6c27695db6d78d040795f635cba732cead19c78cede74800949a"}, - {file = "rpds_py-0.13.1-cp311-none-win_amd64.whl", hash = "sha256:46a07a258bda12270de02b34c4884f200f864bba3dcd6e3a37fef36a168b859d"}, - {file = "rpds_py-0.13.1-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:ba4432301ad7eeb1b00848cf46fae0e5fecfd18a8cb5fdcf856c67985f79ecc7"}, - {file = "rpds_py-0.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d22e0660de24bd8e9ac82f4230a22a5fe4e397265709289d61d5fb333839ba50"}, - {file = "rpds_py-0.13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76a8374b294e4ccb39ccaf11d39a0537ed107534139c00b4393ca3b542cc66e5"}, - {file = "rpds_py-0.13.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7d152ec7bb431040af2500e01436c9aa0d993f243346f0594a15755016bf0be1"}, - {file = "rpds_py-0.13.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74a2044b870df7c9360bb3ce7e12f9ddf8e72e49cd3a353a1528cbf166ad2383"}, - {file = "rpds_py-0.13.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:960e7e460fda2d0af18c75585bbe0c99f90b8f09963844618a621b804f8c3abe"}, - {file = "rpds_py-0.13.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37f79f4f1f06cc96151f4a187528c3fd4a7e1065538a4af9eb68c642365957f7"}, - {file = "rpds_py-0.13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cd4ea56c9542ad0091dfdef3e8572ae7a746e1e91eb56c9e08b8d0808b40f1d1"}, - {file = "rpds_py-0.13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0290712eb5603a725769b5d857f7cf15cf6ca93dda3128065bbafe6fdb709beb"}, - {file = "rpds_py-0.13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0b70c1f800059c92479dc94dda41288fd6607f741f9b1b8f89a21a86428f6383"}, - {file = "rpds_py-0.13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3dd5fb7737224e1497c886fb3ca681c15d9c00c76171f53b3c3cc8d16ccfa7fb"}, - {file = "rpds_py-0.13.1-cp312-none-win32.whl", hash = "sha256:74be3b215a5695690a0f1a9f68b1d1c93f8caad52e23242fcb8ba56aaf060281"}, - {file = "rpds_py-0.13.1-cp312-none-win_amd64.whl", hash = "sha256:f47eef55297799956464efc00c74ae55c48a7b68236856d56183fe1ddf866205"}, - {file = "rpds_py-0.13.1-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:e4a45ba34f904062c63049a760790c6a2fa7a4cc4bd160d8af243b12371aaa05"}, - {file = "rpds_py-0.13.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:20147996376be452cd82cd6c17701daba69a849dc143270fa10fe067bb34562a"}, - {file = "rpds_py-0.13.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b9535aa22ab023704cfc6533e968f7e420affe802d85e956d8a7b4c0b0b5ea"}, - {file = "rpds_py-0.13.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d4fa1eeb9bea6d9b64ac91ec51ee94cc4fc744955df5be393e1c923c920db2b0"}, - {file = "rpds_py-0.13.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b2415d5a7b7ee96aa3a54d4775c1fec140476a17ee12353806297e900eaeddc"}, - {file = "rpds_py-0.13.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:577d40a72550eac1386b77b43836151cb61ff6700adacda2ad4d883ca5a0b6f2"}, - {file = "rpds_py-0.13.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af2d1648eb625a460eee07d3e1ea3a4a6e84a1fb3a107f6a8e95ac19f7dcce67"}, - {file = "rpds_py-0.13.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5b769396eb358d6b55dbf78f3f7ca631ca1b2fe02136faad5af74f0111b4b6b7"}, - {file = "rpds_py-0.13.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:249c8e0055ca597707d71c5ad85fd2a1c8fdb99386a8c6c257e1b47b67a9bec1"}, - {file = "rpds_py-0.13.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:fe30ef31172bdcf946502a945faad110e8fff88c32c4bec9a593df0280e64d8a"}, - {file = "rpds_py-0.13.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2647192facf63be9ed2d7a49ceb07efe01dc6cfb083bd2cc53c418437400cb99"}, - {file = "rpds_py-0.13.1-cp38-none-win32.whl", hash = "sha256:4011d5c854aa804c833331d38a2b6f6f2fe58a90c9f615afdb7aa7cf9d31f721"}, - {file = "rpds_py-0.13.1-cp38-none-win_amd64.whl", hash = "sha256:7cfae77da92a20f56cf89739a557b76e5c6edc094f6ad5c090b9e15fbbfcd1a4"}, - {file = "rpds_py-0.13.1-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:e9be1f7c5f9673616f875299339984da9447a40e3aea927750c843d6e5e2e029"}, - {file = "rpds_py-0.13.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:839676475ac2ccd1532d36af3d10d290a2ca149b702ed464131e450a767550df"}, - {file = "rpds_py-0.13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90031658805c63fe488f8e9e7a88b260ea121ba3ee9cdabcece9c9ddb50da39"}, - {file = "rpds_py-0.13.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ba9fbc5d6e36bfeb5292530321cc56c4ef3f98048647fabd8f57543c34174ec"}, - {file = "rpds_py-0.13.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:08832078767545c5ee12561ce980714e1e4c6619b5b1e9a10248de60cddfa1fd"}, - {file = "rpds_py-0.13.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19f5aa7f5078d35ed8e344bcba40f35bc95f9176dddb33fc4f2084e04289fa63"}, - {file = "rpds_py-0.13.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80080972e1d000ad0341c7cc58b6855c80bd887675f92871221451d13a975072"}, - {file = "rpds_py-0.13.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ee352691c4434eb1c01802e9daa5edcc1007ff15023a320e2693fed6a661b"}, - {file = "rpds_py-0.13.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d20da6b4c7aa9ee75ad0730beaba15d65157f5beeaca54a038bb968f92bf3ce3"}, - {file = "rpds_py-0.13.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:faa12a9f34671a30ea6bb027f04ec4e1fb8fa3fb3ed030893e729d4d0f3a9791"}, - {file = "rpds_py-0.13.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7cf241dbb50ea71c2e628ab2a32b5bfcd36e199152fc44e5c1edb0b773f1583e"}, - {file = "rpds_py-0.13.1-cp39-none-win32.whl", hash = "sha256:dab979662da1c9fbb464e310c0b06cb5f1d174d09a462553af78f0bfb3e01920"}, - {file = "rpds_py-0.13.1-cp39-none-win_amd64.whl", hash = "sha256:a2b3c79586636f1fa69a7bd59c87c15fca80c0d34b5c003d57f2f326e5276575"}, - {file = "rpds_py-0.13.1-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:5967fa631d0ed9f8511dede08bc943a9727c949d05d1efac4ac82b2938024fb7"}, - {file = "rpds_py-0.13.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8308a8d49d1354278d5c068c888a58d7158a419b2e4d87c7839ed3641498790c"}, - {file = "rpds_py-0.13.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0580faeb9def6d0beb7aa666294d5604e569c4e24111ada423cf9936768d95c"}, - {file = "rpds_py-0.13.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2da81c1492291c1a90987d76a47c7b2d310661bf7c93a9de0511e27b796a8b46"}, - {file = "rpds_py-0.13.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c9a1dc5e898ce30e2f9c0aa57181cddd4532b22b7780549441d6429d22d3b58"}, - {file = "rpds_py-0.13.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4ae6f423cb7d1c6256b7482025ace2825728f53b7ac58bcd574de6ee9d242c2"}, - {file = "rpds_py-0.13.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc3179e0815827cf963e634095ae5715ee73a5af61defbc8d6ca79f1bdae1d1d"}, - {file = "rpds_py-0.13.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0d9f8930092558fd15c9e07198625efb698f7cc00b3dc311c83eeec2540226a8"}, - {file = "rpds_py-0.13.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:d1d388d2f5f5a6065cf83c54dd12112b7389095669ff395e632003ae8999c6b8"}, - {file = "rpds_py-0.13.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:08b335fb0c45f0a9e2478a9ece6a1bfb00b6f4c4780f9be3cf36479c5d8dd374"}, - {file = "rpds_py-0.13.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:d11afdc5992bbd7af60ed5eb519873690d921425299f51d80aa3099ed49f2bcc"}, - {file = "rpds_py-0.13.1-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:8c1f6c8df23be165eb0cb78f305483d00c6827a191e3a38394c658d5b9c80bbd"}, - {file = "rpds_py-0.13.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:528e2afaa56d815d2601b857644aeb395afe7e59212ab0659906dc29ae68d9a6"}, - {file = "rpds_py-0.13.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df2af1180b8eeececf4f819d22cc0668bfadadfd038b19a90bd2fb2ee419ec6f"}, - {file = "rpds_py-0.13.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:88956c993a20201744282362e3fd30962a9d86dc4f1dcf2bdb31fab27821b61f"}, - {file = "rpds_py-0.13.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee70ee5f4144a45a9e6169000b5b525d82673d5dab9f7587eccc92794814e7ac"}, - {file = "rpds_py-0.13.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5fd099acaee2325f01281a130a39da08d885e4dedf01b84bf156ec2737d78fe"}, - {file = "rpds_py-0.13.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9656a09653b18b80764647d585750df2dff8928e03a706763ab40ec8c4872acc"}, - {file = "rpds_py-0.13.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7ba239bb37663b2b4cd08e703e79e13321512dccd8e5f0e9451d9e53a6b8509a"}, - {file = "rpds_py-0.13.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:3f55ae773abd96b1de25fc5c3fb356f491bd19116f8f854ba705beffc1ddc3c5"}, - {file = "rpds_py-0.13.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:f4b15a163448ec79241fb2f1bc5a8ae1a4a304f7a48d948d208a2935b26bf8a5"}, - {file = "rpds_py-0.13.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:1a3b2583c86bbfbf417304eeb13400ce7f8725376dc7d3efbf35dc5d7052ad48"}, - {file = "rpds_py-0.13.1-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:f1059ca9a51c936c9a8d46fbc2c9a6b4c15ab3f13a97f1ad32f024b39666ba85"}, - {file = "rpds_py-0.13.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f55601fb58f92e4f4f1d05d80c24cb77505dc42103ddfd63ddfdc51d3da46fa2"}, - {file = "rpds_py-0.13.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcfd5f91b882eedf8d9601bd21261d6ce0e61a8c66a7152d1f5df08d3f643ab1"}, - {file = "rpds_py-0.13.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6574f619e8734140d96c59bfa8a6a6e7a3336820ccd1bfd95ffa610673b650a2"}, - {file = "rpds_py-0.13.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4b9d3f5c48bbe8d9e3758e498b3c34863f2c9b1ac57a4e6310183740e59c980"}, - {file = "rpds_py-0.13.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdd6f8738e1f1d9df5b1603bb03cb30e442710e5672262b95d0f9fcb4edb0dab"}, - {file = "rpds_py-0.13.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8c2bf286e5d755a075e5e97ba56b3de08cccdad6b323ab0b21cc98875176b03"}, - {file = "rpds_py-0.13.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d4b390ee70ca9263b331ccfaf9819ee20e90dfd0201a295e23eb64a005dbef"}, - {file = "rpds_py-0.13.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:db8d0f0ad92f74feb61c4e4a71f1d573ef37c22ef4dc19cab93e501bfdad8cbd"}, - {file = "rpds_py-0.13.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:2abd669a39be69cdfe145927c7eb53a875b157740bf1e2d49e9619fc6f43362e"}, - {file = "rpds_py-0.13.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:2c173f529666bab8e3f948b74c6d91afa22ea147e6ebae49a48229d9020a47c4"}, - {file = "rpds_py-0.13.1.tar.gz", hash = "sha256:264f3a5906c62b9df3a00ad35f6da1987d321a053895bd85f9d5c708de5c0fbf"}, + {file = "rpds_py-0.18.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d31dea506d718693b6b2cffc0648a8929bdc51c70a311b2770f09611caa10d53"}, + {file = "rpds_py-0.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:732672fbc449bab754e0b15356c077cc31566df874964d4801ab14f71951ea80"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a98a1f0552b5f227a3d6422dbd61bc6f30db170939bd87ed14f3c339aa6c7c9"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f1944ce16401aad1e3f7d312247b3d5de7981f634dc9dfe90da72b87d37887d"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38e14fb4e370885c4ecd734f093a2225ee52dc384b86fa55fe3f74638b2cfb09"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08d74b184f9ab6289b87b19fe6a6d1a97fbfea84b8a3e745e87a5de3029bf944"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d70129cef4a8d979caa37e7fe957202e7eee8ea02c5e16455bc9808a59c6b2f0"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0bb20e3a11bd04461324a6a798af34d503f8d6f1aa3d2aa8901ceaf039176d"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81c5196a790032e0fc2464c0b4ab95f8610f96f1f2fa3d4deacce6a79852da60"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3027be483868c99b4985fda802a57a67fdf30c5d9a50338d9db646d590198da"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d44607f98caa2961bab4fa3c4309724b185b464cdc3ba6f3d7340bac3ec97cc1"}, + {file = "rpds_py-0.18.1-cp310-none-win32.whl", hash = "sha256:c273e795e7a0f1fddd46e1e3cb8be15634c29ae8ff31c196debb620e1edb9333"}, + {file = "rpds_py-0.18.1-cp310-none-win_amd64.whl", hash = "sha256:8352f48d511de5f973e4f2f9412736d7dea76c69faa6d36bcf885b50c758ab9a"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88"}, + {file = "rpds_py-0.18.1-cp311-none-win32.whl", hash = "sha256:c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb"}, + {file = "rpds_py-0.18.1-cp311-none-win_amd64.whl", hash = "sha256:70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2"}, + {file = "rpds_py-0.18.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3dd3cd86e1db5aadd334e011eba4e29d37a104b403e8ca24dcd6703c68ca55b3"}, + {file = "rpds_py-0.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:05f3d615099bd9b13ecf2fc9cf2d839ad3f20239c678f461c753e93755d629ee"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35b2b771b13eee8729a5049c976197ff58a27a3829c018a04341bcf1ae409b2b"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ee17cd26b97d537af8f33635ef38be873073d516fd425e80559f4585a7b90c43"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b646bf655b135ccf4522ed43d6902af37d3f5dbcf0da66c769a2b3938b9d8184"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19ba472b9606c36716062c023afa2484d1e4220548751bda14f725a7de17b4f6"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e30ac5e329098903262dc5bdd7e2086e0256aa762cc8b744f9e7bf2a427d3f8"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d58ad6317d188c43750cb76e9deacf6051d0f884d87dc6518e0280438648a9ac"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e1735502458621921cee039c47318cb90b51d532c2766593be6207eec53e5c4c"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f5bab211605d91db0e2995a17b5c6ee5edec1270e46223e513eaa20da20076ac"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2fc24a329a717f9e2448f8cd1f960f9dac4e45b6224d60734edeb67499bab03a"}, + {file = "rpds_py-0.18.1-cp312-none-win32.whl", hash = "sha256:1805d5901779662d599d0e2e4159d8a82c0b05faa86ef9222bf974572286b2b6"}, + {file = "rpds_py-0.18.1-cp312-none-win_amd64.whl", hash = "sha256:720edcb916df872d80f80a1cc5ea9058300b97721efda8651efcd938a9c70a72"}, + {file = "rpds_py-0.18.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:c827576e2fa017a081346dce87d532a5310241648eb3700af9a571a6e9fc7e74"}, + {file = "rpds_py-0.18.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa3679e751408d75a0b4d8d26d6647b6d9326f5e35c00a7ccd82b78ef64f65f8"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0abeee75434e2ee2d142d650d1e54ac1f8b01e6e6abdde8ffd6eeac6e9c38e20"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed402d6153c5d519a0faf1bb69898e97fb31613b49da27a84a13935ea9164dfc"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:338dee44b0cef8b70fd2ef54b4e09bb1b97fc6c3a58fea5db6cc083fd9fc2724"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7750569d9526199c5b97e5a9f8d96a13300950d910cf04a861d96f4273d5b104"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:607345bd5912aacc0c5a63d45a1f73fef29e697884f7e861094e443187c02be5"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:207c82978115baa1fd8d706d720b4a4d2b0913df1c78c85ba73fe6c5804505f0"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6d1e42d2735d437e7e80bab4d78eb2e459af48c0a46e686ea35f690b93db792d"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5463c47c08630007dc0fe99fb480ea4f34a89712410592380425a9b4e1611d8e"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:06d218939e1bf2ca50e6b0ec700ffe755e5216a8230ab3e87c059ebb4ea06afc"}, + {file = "rpds_py-0.18.1-cp38-none-win32.whl", hash = "sha256:312fe69b4fe1ffbe76520a7676b1e5ac06ddf7826d764cc10265c3b53f96dbe9"}, + {file = "rpds_py-0.18.1-cp38-none-win_amd64.whl", hash = "sha256:9437ca26784120a279f3137ee080b0e717012c42921eb07861b412340f85bae2"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:19e515b78c3fc1039dd7da0a33c28c3154458f947f4dc198d3c72db2b6b5dc93"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7b28c5b066bca9a4eb4e2f2663012debe680f097979d880657f00e1c30875a0"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:673fdbbf668dd958eff750e500495ef3f611e2ecc209464f661bc82e9838991e"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d960de62227635d2e61068f42a6cb6aae91a7fe00fca0e3aeed17667c8a34611"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352a88dc7892f1da66b6027af06a2e7e5d53fe05924cc2cfc56495b586a10b72"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e0ee01ad8260184db21468a6e1c37afa0529acc12c3a697ee498d3c2c4dcaf3"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4c39ad2f512b4041343ea3c7894339e4ca7839ac38ca83d68a832fc8b3748ab"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aaa71ee43a703c321906813bb252f69524f02aa05bf4eec85f0c41d5d62d0f4c"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6cd8098517c64a85e790657e7b1e509b9fe07487fd358e19431cb120f7d96338"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4adec039b8e2928983f885c53b7cc4cda8965b62b6596501a0308d2703f8af1b"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:32b7daaa3e9389db3695964ce8e566e3413b0c43e3394c05e4b243a4cd7bef26"}, + {file = "rpds_py-0.18.1-cp39-none-win32.whl", hash = "sha256:2625f03b105328729f9450c8badda34d5243231eef6535f80064d57035738360"}, + {file = "rpds_py-0.18.1-cp39-none-win_amd64.whl", hash = "sha256:bf18932d0003c8c4d51a39f244231986ab23ee057d235a12b2684ea26a353590"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cbfbea39ba64f5e53ae2915de36f130588bba71245b418060ec3330ebf85678e"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3d456ff2a6a4d2adcdf3c1c960a36f4fd2fec6e3b4902a42a384d17cf4e7a65"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7700936ef9d006b7ef605dc53aa364da2de5a3aa65516a1f3ce73bf82ecfc7ae"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51584acc5916212e1bf45edd17f3a6b05fe0cbb40482d25e619f824dccb679de"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:942695a206a58d2575033ff1e42b12b2aece98d6003c6bc739fbf33d1773b12f"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b906b5f58892813e5ba5c6056d6a5ad08f358ba49f046d910ad992196ea61397"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f8e3fecca256fefc91bb6765a693d96692459d7d4c644660a9fff32e517843"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7732770412bab81c5a9f6d20aeb60ae943a9b36dcd990d876a773526468e7163"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bd1105b50ede37461c1d51b9698c4f4be6e13e69a908ab7751e3807985fc0346"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:618916f5535784960f3ecf8111581f4ad31d347c3de66d02e728de460a46303c"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:17c6d2155e2423f7e79e3bb18151c686d40db42d8645e7977442170c360194d4"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c4c4c3f878df21faf5fac86eda32671c27889e13570645a9eea0a1abdd50922"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:fab6ce90574645a0d6c58890e9bcaac8d94dff54fb51c69e5522a7358b80ab64"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531796fb842b53f2695e94dc338929e9f9dbf473b64710c28af5a160b2a8927d"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:740884bc62a5e2bbb31e584f5d23b32320fd75d79f916f15a788d527a5e83644"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:998125738de0158f088aef3cb264a34251908dd2e5d9966774fdab7402edfab7"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2be6e9dd4111d5b31ba3b74d17da54a8319d8168890fbaea4b9e5c3de630ae5"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0cee71bc618cd93716f3c1bf56653740d2d13ddbd47673efa8bf41435a60daa"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c3caec4ec5cd1d18e5dd6ae5194d24ed12785212a90b37f5f7f06b8bedd7139"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:27bba383e8c5231cd559affe169ca0b96ec78d39909ffd817f28b166d7ddd4d8"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:a888e8bdb45916234b99da2d859566f1e8a1d2275a801bb8e4a9644e3c7e7909"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6031b25fb1b06327b43d841f33842b383beba399884f8228a6bb3df3088485ff"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48c2faaa8adfacefcbfdb5f2e2e7bdad081e5ace8d182e5f4ade971f128e6bb3"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d85164315bd68c0806768dc6bb0429c6f95c354f87485ee3593c4f6b14def2bd"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6afd80f6c79893cfc0574956f78a0add8c76e3696f2d6a15bca2c66c415cf2d4"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa242ac1ff583e4ec7771141606aafc92b361cd90a05c30d93e343a0c2d82a89"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21be4770ff4e08698e1e8e0bce06edb6ea0626e7c8f560bc08222880aca6a6f"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c45a639e93a0c5d4b788b2613bd637468edd62f8f95ebc6fcc303d58ab3f0a8"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910e71711d1055b2768181efa0a17537b2622afeb0424116619817007f8a2b10"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9bb1f182a97880f6078283b3505a707057c42bf55d8fca604f70dedfdc0772a"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d54f74f40b1f7aaa595a02ff42ef38ca654b1469bef7d52867da474243cc633"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:8d2e182c9ee01135e11e9676e9a62dfad791a7a467738f06726872374a83db49"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:636a15acc588f70fda1661234761f9ed9ad79ebed3f2125d44be0862708b666e"}, + {file = "rpds_py-0.18.1.tar.gz", hash = "sha256:dc48b479d540770c811fbd1eb9ba2bb66951863e448efec2e2c102625328e92f"}, +] + +[[package]] +name = "ruamel-yaml" +version = "0.18.6" +description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruamel.yaml-0.18.6-py3-none-any.whl", hash = "sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636"}, + {file = "ruamel.yaml-0.18.6.tar.gz", hash = "sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b"}, +] + +[package.dependencies] +"ruamel.yaml.clib" = {version = ">=0.2.7", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.13\""} + +[package.extras] +docs = ["mercurial (>5.7)", "ryd"] +jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.8" +description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +optional = false +python-versions = ">=3.6" +files = [ + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win_amd64.whl", hash = "sha256:1758ce7d8e1a29d23de54a16ae867abd370f01b5a69e1a3ba75223eaa3ca1a1b"}, + {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win32.whl", hash = "sha256:75e1ed13e1f9de23c5607fe6bd1aeaae21e523b32d83bb33918245361e9cc51b"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win32.whl", hash = "sha256:84b554931e932c46f94ab306913ad7e11bba988104c5cff26d90d03f68258cd5"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-win_amd64.whl", hash = "sha256:25ac8c08322002b06fa1d49d1646181f0b2c72f5cbc15a85e80b4c30a544bb15"}, + {file = "ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512"}, +] + +[[package]] +name = "ruff" +version = "0.4.6" +description = "An extremely fast Python linter and code formatter, written in Rust." +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruff-0.4.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ef995583a038cd4a7edf1422c9e19118e2511b8ba0b015861b4abd26ec5367c5"}, + {file = "ruff-0.4.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:602ebd7ad909eab6e7da65d3c091547781bb06f5f826974a53dbe563d357e53c"}, + {file = "ruff-0.4.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f9ced5cbb7510fd7525448eeb204e0a22cabb6e99a3cb160272262817d49786"}, + {file = "ruff-0.4.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04a80acfc862e0e1630c8b738e70dcca03f350bad9e106968a8108379e12b31f"}, + {file = "ruff-0.4.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be47700ecb004dfa3fd4dcdddf7322d4e632de3c06cd05329d69c45c0280e618"}, + {file = "ruff-0.4.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1ff930d6e05f444090a0139e4e13e1e2e1f02bd51bb4547734823c760c621e79"}, + {file = "ruff-0.4.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f13410aabd3b5776f9c5699f42b37a3a348d65498c4310589bc6e5c548dc8a2f"}, + {file = "ruff-0.4.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0cf5cc02d3ae52dfb0c8a946eb7a1d6ffe4d91846ffc8ce388baa8f627e3bd50"}, + {file = "ruff-0.4.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea3424793c29906407e3cf417f28fc33f689dacbbadfb52b7e9a809dd535dcef"}, + {file = "ruff-0.4.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1fa8561489fadf483ffbb091ea94b9c39a00ed63efacd426aae2f197a45e67fc"}, + {file = "ruff-0.4.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4d5b914818d8047270308fe3e85d9d7f4a31ec86c6475c9f418fbd1624d198e0"}, + {file = "ruff-0.4.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:4f02284335c766678778475e7698b7ab83abaf2f9ff0554a07b6f28df3b5c259"}, + {file = "ruff-0.4.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:3a6a0a4f4b5f54fff7c860010ab3dd81425445e37d35701a965c0248819dde7a"}, + {file = "ruff-0.4.6-py3-none-win32.whl", hash = "sha256:9018bf59b3aa8ad4fba2b1dc0299a6e4e60a4c3bc62bbeaea222679865453062"}, + {file = "ruff-0.4.6-py3-none-win_amd64.whl", hash = "sha256:a769ae07ac74ff1a019d6bd529426427c3e30d75bdf1e08bb3d46ac8f417326a"}, + {file = "ruff-0.4.6-py3-none-win_arm64.whl", hash = "sha256:735a16407a1a8f58e4c5b913ad6102722e80b562dd17acb88887685ff6f20cf6"}, + {file = "ruff-0.4.6.tar.gz", hash = "sha256:a797a87da50603f71e6d0765282098245aca6e3b94b7c17473115167d8dfb0b7"}, ] [[package]] name = "rx" version = "1.6.3" description = "Reactive Extensions (Rx) for Python" -category = "main" optional = false python-versions = "*" files = [ @@ -3228,14 +3967,13 @@ files = [ [[package]] name = "scp" -version = "0.14.5" +version = "0.15.0" description = "scp module for paramiko" -category = "main" optional = false python-versions = "*" files = [ - {file = "scp-0.14.5-py2.py3-none-any.whl", hash = "sha256:d224535dd8ed00294f52b0e0e18fde7a6fb7a3d06b97ede9e3f750fa7bf75c09"}, - {file = "scp-0.14.5.tar.gz", hash = "sha256:64f0015899b3d212cb8088e7d40ebaf0686889ff0e243d5c1242efe8b50f053e"}, + {file = "scp-0.15.0-py2.py3-none-any.whl", hash = "sha256:9e7f721e5ac563c33eb0831d0f949c6342f1c28c3bdc3b02f39d77b5ea20df7e"}, + {file = "scp-0.15.0.tar.gz", hash = "sha256:f1b22e9932123ccf17eebf19e0953c6e9148f589f93d91b872941a696305c83f"}, ] [package.dependencies] @@ -3243,26 +3981,23 @@ paramiko = "*" [[package]] name = "setuptools" -version = "69.0.0" +version = "70.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.0-py3-none-any.whl", hash = "sha256:eb03b43f23910c5fd0909cb677ad017cd9531f493d27f8b3f5316ff1fb07390e"}, - {file = "setuptools-69.0.0.tar.gz", hash = "sha256:4c65d4f7891e5b046e9146913b87098144de2ca2128fbc10135b8556a6ddd946"}, + {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, + {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "singledispatch" version = "4.1.0" description = "Backport functools.singledispatch to older Pythons." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3278,7 +4013,6 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3290,7 +4024,6 @@ files = [ name = "smmap" version = "5.0.1" description = "A pure Python implementation of a sliding window memory map manager" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3299,27 +4032,25 @@ files = [ ] [[package]] -name = "snowballstemmer" -version = "2.2.0" -description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -category = "dev" +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] [[package]] name = "social-auth-app-django" -version = "5.2.0" +version = "5.4.1" description = "Python Social Authentication, Django integration." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "social-auth-app-django-5.2.0.tar.gz", hash = "sha256:4a5dae406f3874b4003708ff120c02cb1a4c8eeead56cd163646347309fcd0f8"}, - {file = "social_auth_app_django-5.2.0-py3-none-any.whl", hash = "sha256:0347ca4cd23ea9d15a665da9d22950552fb66b95600e6c2ebae38ca883b3a4ed"}, + {file = "social-auth-app-django-5.4.1.tar.gz", hash = "sha256:2a43cde559dd34fdc7132417b6c52c780fa99ec2332dee9f405b4763f371c367"}, + {file = "social_auth_app_django-5.4.1-py3-none-any.whl", hash = "sha256:7519f186c63c50f2d364457b236f051338d194bcface55e318a6a705c5213477"}, ] [package.dependencies] @@ -3328,14 +4059,13 @@ social-auth-core = ">=4.4.1" [[package]] name = "social-auth-core" -version = "4.5.0" +version = "4.5.4" description = "Python social authentication made simple." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "social-auth-core-4.5.0.tar.gz", hash = "sha256:3d4154f45c0bacffe54ccf4361bce7e66cf5f5cd1bb0ebb7507ad09a1b07d9d9"}, - {file = "social_auth_core-4.5.0-py3-none-any.whl", hash = "sha256:f4ae5d8e503a401f319498bcad59fd1f6c473517eeae89c22299250f63c33365"}, + {file = "social-auth-core-4.5.4.tar.gz", hash = "sha256:d3dbeb0999ffd0e68aa4bd73f2ac698a18133fd11b3fc890e1366f18c8889fac"}, + {file = "social_auth_core-4.5.4-py3-none-any.whl", hash = "sha256:33cf970a623c442376f9d4a86fb187579e4438649daa5b5be993d05e74d7b2db"}, ] [package.dependencies] @@ -3355,41 +4085,73 @@ saml = ["python3-saml (>=1.5.0)"] [[package]] name = "sqlparse" -version = "0.4.4" +version = "0.5.0" description = "A non-validating SQL parser." -category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "sqlparse-0.4.4-py3-none-any.whl", hash = "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3"}, - {file = "sqlparse-0.4.4.tar.gz", hash = "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c"}, + {file = "sqlparse-0.5.0-py3-none-any.whl", hash = "sha256:c204494cd97479d0e39f28c93d46c0b2d5959c7b9ab904762ea6c7af211c8663"}, + {file = "sqlparse-0.5.0.tar.gz", hash = "sha256:714d0a4932c059d16189f58ef5411ec2287a4360f17cdd0edd2d09d4c5087c93"}, ] [package.extras] -dev = ["build", "flake8"] +dev = ["build", "hatch"] doc = ["sphinx"] -test = ["pytest", "pytest-cov"] + +[[package]] +name = "stack-data" +version = "0.6.3" +description = "Extract data from python stack frames and tracebacks for informative displays" +optional = false +python-versions = "*" +files = [ + {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, + {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, +] + +[package.dependencies] +asttokens = ">=2.1.0" +executing = ">=1.2.0" +pure-eval = "*" + +[package.extras] +tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] [[package]] name = "stevedore" -version = "5.1.0" +version = "5.2.0" description = "Manage dynamic plugins for Python applications" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "stevedore-5.1.0-py3-none-any.whl", hash = "sha256:8cc040628f3cea5d7128f2e76cf486b2251a4e543c7b938f58d9a377f6694a2d"}, - {file = "stevedore-5.1.0.tar.gz", hash = "sha256:a54534acf9b89bc7ed264807013b505bf07f74dbe4bcfa37d32bd063870b087c"}, + {file = "stevedore-5.2.0-py3-none-any.whl", hash = "sha256:1c15d95766ca0569cad14cb6272d4d31dae66b011a929d7c18219c176ea1b5c9"}, + {file = "stevedore-5.2.0.tar.gz", hash = "sha256:46b93ca40e1114cea93d738a6c1e365396981bb6bb78c27045b7587c9473544d"}, ] [package.dependencies] pbr = ">=2.0.0,<2.1.0 || >2.1.0" +[[package]] +name = "structlog" +version = "22.3.0" +description = "Structured Logging for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "structlog-22.3.0-py3-none-any.whl", hash = "sha256:b403f344f902b220648fa9f286a23c0cc5439a5844d271fec40562dbadbc70ad"}, + {file = "structlog-22.3.0.tar.gz", hash = "sha256:e7509391f215e4afb88b1b80fa3ea074be57a5a17d794bd436a5c949da023333"}, +] + +[package.extras] +dev = ["structlog[docs,tests,typing]"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-mermaid", "twisted"] +tests = ["coverage[toml]", "freezegun (>=0.2.8)", "pretend", "pytest (>=6.0)", "pytest-asyncio (>=0.17)", "simplejson"] +typing = ["mypy", "rich", "twisted"] + [[package]] name = "svgwrite" version = "1.4.3" description = "A Python library to create SVG drawings." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3401,7 +4163,6 @@ files = [ name = "text-unidecode" version = "1.3" description = "The most basic Text::Unidecode port" -category = "main" optional = false python-versions = "*" files = [ @@ -3413,7 +4174,6 @@ files = [ name = "textfsm" version = "1.1.3" description = "Python module for parsing semi-structured text into python tables." -category = "main" optional = false python-versions = "*" files = [ @@ -3429,7 +4189,6 @@ six = "*" name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3441,7 +4200,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3451,26 +4209,61 @@ files = [ [[package]] name = "tomlkit" -version = "0.12.3" +version = "0.12.5" description = "Style preserving TOML library" -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"}, - {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"}, + {file = "tomlkit-0.12.5-py3-none-any.whl", hash = "sha256:af914f5a9c59ed9d0762c7b64d3b5d5df007448eb9cd2edc8a46b1eafead172f"}, + {file = "tomlkit-0.12.5.tar.gz", hash = "sha256:eef34fba39834d4d6b73c9ba7f3e4d1c417a4e56f89a7e96e090dd0d24b8fb3c"}, ] +[[package]] +name = "towncrier" +version = "23.6.0" +description = "Building newsfiles for your project." +optional = false +python-versions = ">=3.7" +files = [ + {file = "towncrier-23.6.0-py3-none-any.whl", hash = "sha256:da552f29192b3c2b04d630133f194c98e9f14f0558669d427708e203fea4d0a5"}, + {file = "towncrier-23.6.0.tar.gz", hash = "sha256:fc29bd5ab4727c8dacfbe636f7fb5dc53b99805b62da1c96b214836159ff70c1"}, +] + +[package.dependencies] +click = "*" +click-default-group = "*" +importlib-resources = {version = ">=5", markers = "python_version < \"3.10\""} +incremental = "*" +jinja2 = "*" +tomli = {version = "*", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["furo", "packaging", "sphinx (>=5)", "twisted"] + +[[package]] +name = "traitlets" +version = "5.14.3" +description = "Traitlets Python configuration system" +optional = false +python-versions = ">=3.8" +files = [ + {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, + {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, +] + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] + [[package]] name = "transitions" -version = "0.9.0" +version = "0.9.1" description = "A lightweight, object-oriented Python state machine implementation with many extensions." -category = "main" optional = false python-versions = "*" files = [ - {file = "transitions-0.9.0-py2.py3-none-any.whl", hash = "sha256:5687ee8c6a3200830e44f988d16b0045f53293f7a873002d7bff70852331a078"}, - {file = "transitions-0.9.0.tar.gz", hash = "sha256:2f54d11bdb225779d7e729011e93a9fb717668ce3dc65f8d4f5a5d7ba2f48e10"}, + {file = "transitions-0.9.1-py2.py3-none-any.whl", hash = "sha256:e76ad7bf44d46bd03bc50f269cebfa5affef28534c92b87b43e60b03d8925864"}, + {file = "transitions-0.9.1.tar.gz", hash = "sha256:3542c37108e93e2ae5f215208ec5732c94a772937854a102cd7345b967fee61b"}, ] [package.dependencies] @@ -3484,7 +4277,6 @@ test = ["pytest"] name = "ttp" version = "0.9.5" description = "Template Text Parser" -category = "main" optional = false python-versions = ">=2.7,<4.0" files = [ @@ -3498,14 +4290,13 @@ full = ["cerberus (>=1.3.0,<1.4.0)", "deepdiff (>=5.8.0,<5.9.0)", "jinja2 (>=3.0 [[package]] name = "ttp-templates" -version = "0.3.5" +version = "0.3.6" description = "Template Text Parser Templates collections" -category = "main" optional = false python-versions = ">=3.6,<4.0" files = [ - {file = "ttp_templates-0.3.5-py3-none-any.whl", hash = "sha256:4985a68640468127a0e31021672039cd88a8b9c3dd9289cad67839209cddaf30"}, - {file = "ttp_templates-0.3.5.tar.gz", hash = "sha256:e59870d4f65bd4aaf89178dc9065a7db8b80a23d5d79b5d6ffd041312d5ec5a6"}, + {file = "ttp_templates-0.3.6-py3-none-any.whl", hash = "sha256:a126a70b23c428b541f458400eac98582894937ef3825c423d08d4384b4867ae"}, + {file = "ttp_templates-0.3.6.tar.gz", hash = "sha256:f05ac74e9ed75726fab347a144493ca7ffcd3ef298bc54fc09e2fce83c42916d"}, ] [package.dependencies] @@ -3516,33 +4307,30 @@ docs = ["mkdocs (==1.2.4)", "mkdocs-material (==7.2.2)", "mkdocs-material-extens [[package]] name = "typing-extensions" -version = "4.8.0" +version = "4.12.0" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, - {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, + {file = "typing_extensions-4.12.0-py3-none-any.whl", hash = "sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594"}, + {file = "typing_extensions-4.12.0.tar.gz", hash = "sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8"}, ] [[package]] name = "tzdata" -version = "2023.3" +version = "2024.1" description = "Provider of IANA time zone data" -category = "main" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, - {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, + {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, + {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, ] [[package]] name = "uritemplate" version = "4.1.1" description = "Implementation of RFC 6570 URI Templates" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3552,26 +4340,24 @@ files = [ [[package]] name = "urllib3" -version = "2.1.0" +version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, + {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] +brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "vine" version = "5.1.0" description = "Python promises." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3581,39 +4367,43 @@ files = [ [[package]] name = "watchdog" -version = "3.0.0" +version = "4.0.1" description = "Filesystem events monitoring" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41"}, - {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397"}, - {file = "watchdog-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96"}, - {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae"}, - {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9"}, - {file = "watchdog-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7"}, - {file = "watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674"}, - {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f"}, - {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc"}, - {file = "watchdog-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3"}, - {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3"}, - {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0"}, - {file = "watchdog-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8"}, - {file = "watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100"}, - {file = "watchdog-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346"}, - {file = "watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d"}, - {file = "watchdog-3.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33"}, - {file = "watchdog-3.0.0-py3-none-win32.whl", hash = "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f"}, - {file = "watchdog-3.0.0-py3-none-win_amd64.whl", hash = "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c"}, - {file = "watchdog-3.0.0-py3-none-win_ia64.whl", hash = "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759"}, - {file = "watchdog-3.0.0.tar.gz", hash = "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9"}, + {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:da2dfdaa8006eb6a71051795856bedd97e5b03e57da96f98e375682c48850645"}, + {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e93f451f2dfa433d97765ca2634628b789b49ba8b504fdde5837cdcf25fdb53b"}, + {file = "watchdog-4.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ef0107bbb6a55f5be727cfc2ef945d5676b97bffb8425650dadbb184be9f9a2b"}, + {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:17e32f147d8bf9657e0922c0940bcde863b894cd871dbb694beb6704cfbd2fb5"}, + {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03e70d2df2258fb6cb0e95bbdbe06c16e608af94a3ffbd2b90c3f1e83eb10767"}, + {file = "watchdog-4.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123587af84260c991dc5f62a6e7ef3d1c57dfddc99faacee508c71d287248459"}, + {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:093b23e6906a8b97051191a4a0c73a77ecc958121d42346274c6af6520dec175"}, + {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:611be3904f9843f0529c35a3ff3fd617449463cb4b73b1633950b3d97fa4bfb7"}, + {file = "watchdog-4.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:62c613ad689ddcb11707f030e722fa929f322ef7e4f18f5335d2b73c61a85c28"}, + {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d4925e4bf7b9bddd1c3de13c9b8a2cdb89a468f640e66fbfabaf735bd85b3e35"}, + {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cad0bbd66cd59fc474b4a4376bc5ac3fc698723510cbb64091c2a793b18654db"}, + {file = "watchdog-4.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a3c2c317a8fb53e5b3d25790553796105501a235343f5d2bf23bb8649c2c8709"}, + {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c9904904b6564d4ee8a1ed820db76185a3c96e05560c776c79a6ce5ab71888ba"}, + {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:667f3c579e813fcbad1b784db7a1aaa96524bed53437e119f6a2f5de4db04235"}, + {file = "watchdog-4.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d10a681c9a1d5a77e75c48a3b8e1a9f2ae2928eda463e8d33660437705659682"}, + {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7"}, + {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:998d2be6976a0ee3a81fb8e2777900c28641fb5bfbd0c84717d89bca0addcdc5"}, + {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e7921319fe4430b11278d924ef66d4daa469fafb1da679a2e48c935fa27af193"}, + {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:f0de0f284248ab40188f23380b03b59126d1479cd59940f2a34f8852db710625"}, + {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bca36be5707e81b9e6ce3208d92d95540d4ca244c006b61511753583c81c70dd"}, + {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ab998f567ebdf6b1da7dc1e5accfaa7c6992244629c0fdaef062f43249bd8dee"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:dddba7ca1c807045323b6af4ff80f5ddc4d654c8bce8317dde1bd96b128ed253"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:4513ec234c68b14d4161440e07f995f231be21a09329051e67a2118a7a612d2d"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_i686.whl", hash = "sha256:4107ac5ab936a63952dea2a46a734a23230aa2f6f9db1291bf171dac3ebd53c6"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:6e8c70d2cd745daec2a08734d9f63092b793ad97612470a0ee4cbb8f5f705c57"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f27279d060e2ab24c0aa98363ff906d2386aa6c4dc2f1a374655d4e02a6c5e5e"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:f8affdf3c0f0466e69f5b3917cdd042f89c8c63aebdb9f7c078996f607cdb0f5"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84"}, + {file = "watchdog-4.0.1-py3-none-win32.whl", hash = "sha256:206afc3d964f9a233e6ad34618ec60b9837d0582b500b63687e34011e15bb429"}, + {file = "watchdog-4.0.1-py3-none-win_amd64.whl", hash = "sha256:7577b3c43e5909623149f76b099ac49a1a01ca4e167d1785c76eb52fa585745a"}, + {file = "watchdog-4.0.1-py3-none-win_ia64.whl", hash = "sha256:d7b9f5f3299e8dd230880b6c55504a1f69cf1e4316275d1b215ebdd8187ec88d"}, + {file = "watchdog-4.0.1.tar.gz", hash = "sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44"}, ] [package.extras] @@ -3621,106 +4411,38 @@ watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "wcwidth" -version = "0.2.10" +version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" -category = "main" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.10-py2.py3-none-any.whl", hash = "sha256:aec5179002dd0f0d40c456026e74a729661c9d468e1ed64405e3a6c2176ca36f"}, - {file = "wcwidth-0.2.10.tar.gz", hash = "sha256:390c7454101092a6a5e43baad8f83de615463af459201709556b6e4b1c861f97"}, + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] [[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -category = "dev" +name = "wheel" +version = "0.43.0" +description = "A built-package format for Python" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, + {file = "wheel-0.43.0-py3-none-any.whl", hash = "sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81"}, + {file = "wheel-0.43.0.tar.gz", hash = "sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85"}, ] +[package.extras] +test = ["pytest (>=6.0.0)", "setuptools (>=65)"] + [[package]] name = "yamllint" -version = "1.33.0" +version = "1.35.1" description = "A linter for YAML files." -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "yamllint-1.33.0-py3-none-any.whl", hash = "sha256:28a19f5d68d28d8fec538a1db21bb2d84c7dc2e2ea36266da8d4d1c5a683814d"}, - {file = "yamllint-1.33.0.tar.gz", hash = "sha256:2dceab9ef2d99518a2fcf4ffc964d44250ac4459be1ba3ca315118e4a1a81f7d"}, + {file = "yamllint-1.35.1-py3-none-any.whl", hash = "sha256:2e16e504bb129ff515b37823b472750b36b6de07963bd74b307341ef5ad8bdc3"}, + {file = "yamllint-1.35.1.tar.gz", hash = "sha256:7a003809f88324fd2c877734f2d575ee7881dd9043360657cc8049c809eba6cd"}, ] [package.dependencies] @@ -3734,7 +4456,6 @@ dev = ["doc8", "flake8", "flake8-import-order", "rstcheck[sphinx]", "sphinx"] name = "yamlordereddictloader" version = "0.4.2" description = "YAML loader and dumper for PyYAML allowing to keep keys order." -category = "main" optional = false python-versions = "*" files = [ @@ -3747,21 +4468,23 @@ pyyaml = "*" [[package]] name = "zipp" -version = "3.17.0" +version = "3.19.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, - {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, + {file = "zipp-3.19.0-py3-none-any.whl", hash = "sha256:96dc6ad62f1441bcaccef23b274ec471518daf4fbbc580341204936a5a3dddec"}, + {file = "zipp-3.19.0.tar.gz", hash = "sha256:952df858fb3164426c976d9338d3961e8e8b3758e2e059e0f754b8c4262625ee"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] + +[extras] +all = [] [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.12" -content-hash = "3eeabf46ff196a3c23659ada1fe5d50b0bd1a788f9c858f3a475d39b7e12bd80" +content-hash = "34f02489b251692fdf52e61cd635a6d417cd443bf078ea752d0be7049c3a0224" diff --git a/pyproject.toml b/pyproject.toml old mode 100644 new mode 100755 index 6e169145..fe122739 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,13 @@ [tool.poetry] name = "nautobot-device-onboarding" -version = "3.0.1" -description = "A plugin for Nautobot to easily onboard new devices." +version = "4.0.0" +description = "A app for Nautobot to easily onboard new devices." authors = ["Network to Code, LLC "] license = "Apache-2.0" readme = "README.md" -homepage = "https://github.com/nautobot/nautobot-plugin-device-onboarding" -repository = "https://github.com/nautobot/nautobot-plugin-device-onboarding" -keywords = ["nautobot", "nautobot-plugin"] +homepage = "https://github.com/nautobot/nautobot-app-device-onboarding" +repository = "https://github.com/nautobot/nautobot-app-device-onboarding" +keywords = ["nautobot", "nautobot-app", "nautobot-plugin"] classifiers = [ "Intended Audience :: Developers", "Development Status :: 5 - Production/Stable", @@ -17,19 +17,27 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", ] -include = [ - "LICENSE", - "README.md", -] packages = [ { include = "nautobot_device_onboarding" }, ] +include = [ + # Poetry by default will exclude files that are in .gitignore + "nautobot_device_onboarding/static/nautobot_device_onboarding/docs/**/*", +] [tool.poetry.dependencies] python = ">=3.8,<3.12" napalm = ">=2.5.0, <5" zipp = "^3.4.0" -nautobot = "^2.0.3" +nautobot = "^2.2.3" +nautobot-ssot = "^2.6.0" +nautobot-plugin-nornir = "^2.0.0" +jdiff = "^0.0.6" +ntc-templates = "^6.0.0" +nautobot-secrets-providers = "^2.0.1" +python-tss-sdk = "*" +# Netutils pin is needed for https://github.com/networktocode/netutils/pull/553 +netutils = "^1.9.1" [tool.poetry.group.dev.dependencies] bandit = "*" @@ -38,10 +46,11 @@ coverage = "*" django-debug-toolbar = "*" flake8 = "*" invoke = "*" -pydocstyle = "*" +ipython = "*" pylint = "*" pylint-django = "*" pylint-nautobot = "*" +ruff = "*" yamllint = "*" toml = "*" Markdown = "*" @@ -54,6 +63,11 @@ mkdocs-version-annotations = "1.0.0" # Automatic documentation from sources, for MkDocs mkdocstrings = "0.22.0" mkdocstrings-python = "1.5.2" +towncrier = "~23.6.0" + +[tool.poetry.extras] +all = [ +] [tool.black] line-length = 120 @@ -78,6 +92,9 @@ exclude = ''' ) ''' +[tool.coverage.report] +show_missing = true + [tool.pylint.master] # Include the pylint_django plugin to avoid spurious warnings about Django patterns load-plugins="pylint_django, pylint_nautobot" @@ -91,10 +108,20 @@ no-docstring-rgx="^(_|test_|Meta$)" # Line length is enforced by Black, so pylint doesn't need to check it. # Pylint and Black disagree about how to format multi-line arrays; Black wins. disable = """, + arguments-differ, line-too-long, duplicate-code, - too-many-lines, + logging-fstring-interpolation, + too-few-public-methods, too-many-ancestors, + too-many-arguments, + too-many-branches, + too-many-lines, + too-many-locals, + too-many-public-methods, + too-many-statements, + unused-argument, + unused-import, """ [tool.pylint.miscellaneous] @@ -106,21 +133,99 @@ notes = """, [tool.pylint-nautobot] supported_nautobot_versions = [ - "2.0.0" + "2.0.3" ] -[tool.pydocstyle] +[tool.ruff] +line-length = 120 +target-version = "py38" + +[tool.ruff.lint] +select = [ + "D", # pydocstyle +] +ignore = [ + # warning: `one-blank-line-before-class` (D203) and `no-blank-line-before-class` (D211) are incompatible. + "D203", # 1 blank line required before class docstring + + # D212 is enabled by default in google convention, and complains if we have a docstring like: + # """ + # My docstring is on the line after the opening quotes instead of on the same line as them. + # """ + # We've discussed and concluded that we consider this to be a valid style choice. + "D212", # Multi-line docstring summary should start at the first line + "D213", # Multi-line docstring summary should start at the second line + + # Produces a lot of issues in the current codebase. + "D401", # First line of docstring should be in imperative mood + "D407", # Missing dashed underline after section + "D416", # Section name ends in colon +] + +[tool.ruff.lint.pydocstyle] convention = "google" -inherit = false -match = "(?!__init__).*\\.py" -match-dir = "(?!tests|migrations|development)[^\\.].*" -# D212 is enabled by default in google convention, and complains if we have a docstring like: -# """ -# My docstring is on the line after the opening quotes instead of on the same line as them. -# """ -# We've discussed and concluded that we consider this to be a valid style choice. -add_ignore = "D212" + +[tool.ruff.per-file-ignores] +"nautobot_device_onboarding/migrations/*" = [ + "D", # pydocstyle +] +"nautobot_device_onboarding/tests/*" = [ + "D", # pydocstyle +] [build-system] requires = ["poetry_core>=1.0.0"] build-backend = "poetry.core.masonry.api" + +[tool.towncrier] +package = "nautobot" +directory = "changes" +filename = "docs/admin/release_notes/version_X.Y.md" +template = "development/towncrier_template.j2" +start_string = "" +issue_format = "[#{issue}](https://github.com/nautobot/nautobot-app-device-onboarding/issues/{issue})" + +[[tool.towncrier.type]] +directory = "security" +name = "Security" +showcontent = true + +[[tool.towncrier.type]] +directory = "added" +name = "Added" +showcontent = true + +[[tool.towncrier.type]] +directory = "changed" +name = "Changed" +showcontent = true + +[[tool.towncrier.type]] +directory = "deprecated" +name = "Deprecated" +showcontent = true + +[[tool.towncrier.type]] +directory = "removed" +name = "Removed" +showcontent = true + +[[tool.towncrier.type]] +directory = "fixed" +name = "Fixed" +showcontent = true + +[[tool.towncrier.type]] +directory = "dependencies" +name = "Dependencies" +showcontent = true + +[[tool.towncrier.type]] +directory = "documentation" +name = "Documentation" +showcontent = true + +[[tool.towncrier.type]] +directory = "housekeeping" +name = "Housekeeping" +showcontent = true diff --git a/tasks.py b/tasks.py index 6ceca220..c5b4be23 100644 --- a/tasks.py +++ b/tasks.py @@ -13,6 +13,8 @@ """ import os +from pathlib import Path +from time import sleep from invoke.collection import Collection from invoke.tasks import task as invoke_task @@ -46,7 +48,7 @@ def is_truthy(arg): namespace.configure( { "nautobot_device_onboarding": { - "nautobot_ver": "2.0.3", + "nautobot_ver": "2.2.3", "project_name": "nautobot-device-onboarding", "python_ver": "3.11", "local": False, @@ -67,6 +69,25 @@ def _is_compose_included(context, name): return f"docker-compose.{name}.yml" in context.nautobot_device_onboarding.compose_files +def _await_healthy_service(context, service): + container_id = docker_compose(context, f"ps -q -- {service}", pty=False, echo=False, hide=True).stdout.strip() + _await_healthy_container(context, container_id) + + +def _await_healthy_container(context, container_id): + while True: + result = context.run( + "docker inspect --format='{{.State.Health.Status}}' " + container_id, + pty=False, + echo=False, + hide=True, + ) + if result.stdout.strip() == "healthy": + break + print(f"Waiting for `{container_id}` container to become healthy ...") + sleep(1) + + def task(function=None, *args, **kwargs): """Task decorator to override the default Invoke task decorator and add each task to the invoke namespace.""" @@ -128,15 +149,27 @@ def docker_compose(context, command, **kwargs): def run_command(context, command, **kwargs): """Wrapper to run a command locally or inside the nautobot container.""" if is_truthy(context.nautobot_device_onboarding.local): + if "command_env" in kwargs: + kwargs["env"] = { + **kwargs.get("env", {}), + **kwargs.pop("command_env"), + } context.run(command, **kwargs) else: # Check if nautobot is running, no need to start another nautobot container to run a command docker_compose_status = "ps --services --filter status=running" results = docker_compose(context, docker_compose_status, hide="out") if "nautobot" in results.stdout: - compose_command = f"exec nautobot {command}" + compose_command = "exec" else: - compose_command = f"run --rm --entrypoint '{command}' nautobot" + compose_command = "run --rm --entrypoint=''" + + if "command_env" in kwargs: + command_env = kwargs.pop("command_env") + for key, value in command_env.items(): + compose_command += f' --env="{key}={value}"' + + compose_command += f" -- nautobot {command}" pty = kwargs.pop("pty", True) @@ -216,11 +249,46 @@ def stop(context, service=""): docker_compose(context, "stop" if service else "down --remove-orphans", service=service) -@task -def destroy(context): +@task( + aliases=("down",), + help={ + "volumes": "Remove Docker compose volumes (default: True)", + "import-db-file": "Import database from `import-db-file` file into the fresh environment (default: empty)", + }, +) +def destroy(context, volumes=True, import_db_file=""): """Destroy all containers and volumes.""" print("Destroying Nautobot...") - docker_compose(context, "down --remove-orphans --volumes") + docker_compose(context, f"down --remove-orphans {'--volumes' if volumes else ''}") + + if not import_db_file: + return + + if not volumes: + raise ValueError("Cannot specify `--no-volumes` and `--import-db-file` arguments at the same time.") + + print(f"Importing database file: {import_db_file}...") + + input_path = Path(import_db_file).absolute() + if not input_path.is_file(): + raise ValueError(f"File not found: {input_path}") + + command = [ + "run", + "--rm", + "--detach", + f"--volume='{input_path}:/docker-entrypoint-initdb.d/dump.sql'", + "--", + "db", + ] + + container_id = docker_compose(context, " ".join(command), pty=False, echo=False, hide=True).stdout.strip() + _await_healthy_container(context, container_id) + print("Stopping database container...") + context.run(f"docker stop {container_id}", pty=False, echo=False, hide=True) + + print("Database import complete, you can start Nautobot with the following command:") + print("invoke start") @task @@ -271,15 +339,22 @@ def logs(context, service="", follow=False, tail=0): # ------------------------------------------------------------------------------ # ACTIONS # ------------------------------------------------------------------------------ -@task(help={"file": "Python file to execute"}) -def nbshell(context, file=""): +@task( + help={ + "file": "Python file to execute", + "env": "Environment variables to pass to the command", + "plain": "Flag to run nbshell in plain mode (default: False)", + }, +) +def nbshell(context, file="", env={}, plain=False): """Launch an interactive nbshell session.""" command = [ "nautobot-server", "nbshell", + "--plain" if plain else "", f"< '{file}'" if file else "", ] - run_command(context, " ".join(command), pty=not bool(file)) + run_command(context, " ".join(command), pty=not bool(file), command_env=env) @task @@ -424,27 +499,45 @@ def dbshell(context, db_name="", input_file="", output_file="", query=""): @task( help={ + "db-name": "Database name to create (default: Nautobot database)", "input-file": "SQL dump file to replace the existing database with. This can be generated using `invoke backup-db` (default: `dump.sql`).", } ) -def import_db(context, input_file="dump.sql"): - """Stop Nautobot containers and replace the current database with the dump into the running `db` container.""" - docker_compose(context, "stop -- nautobot worker") +def import_db(context, db_name="", input_file="dump.sql"): + """Stop Nautobot containers and replace the current database with the dump into `db` container.""" + docker_compose(context, "stop -- nautobot worker beat") + start(context, "db") + _await_healthy_service(context, "db") command = ["exec -- db sh -c '"] if _is_compose_included(context, "mysql"): + if not db_name: + db_name = "$MYSQL_DATABASE" command += [ + "mysql --user root --password=$MYSQL_ROOT_PASSWORD", + '--execute="', + f"DROP DATABASE IF EXISTS {db_name};", + f"CREATE DATABASE {db_name};", + ( + "" + if db_name == "$MYSQL_DATABASE" + else f"GRANT ALL PRIVILEGES ON {db_name}.* TO $MYSQL_USER; FLUSH PRIVILEGES;" + ), + '"', + "&&", "mysql", - "--database=$MYSQL_DATABASE", + f"--database={db_name}", "--user=$MYSQL_USER", "--password=$MYSQL_PASSWORD", ] elif _is_compose_included(context, "postgres"): + if not db_name: + db_name = "$POSTGRES_DB" command += [ - "psql", - "--username=$POSTGRES_USER", - "postgres", + f"dropdb --if-exists --user=$POSTGRES_USER {db_name} &&", + f"createdb --user=$POSTGRES_USER {db_name} &&", + f"psql --user=$POSTGRES_USER --dbname={db_name}", ] else: raise ValueError("Unsupported database backend.") @@ -467,7 +560,10 @@ def import_db(context, input_file="dump.sql"): } ) def backup_db(context, db_name="", output_file="dump.sql", readable=True): - """Dump database into `output_file` file from running `db` container.""" + """Dump database into `output_file` file from `db` container.""" + start(context, "db") + _await_healthy_service(context, "db") + command = ["exec -- db sh -c '"] if _is_compose_included(context, "mysql"): @@ -475,17 +571,12 @@ def backup_db(context, db_name="", output_file="dump.sql", readable=True): "mysqldump", "--user=root", "--password=$MYSQL_ROOT_PASSWORD", - "--add-drop-database", "--skip-extended-insert" if readable else "", - "--databases", db_name if db_name else "$MYSQL_DATABASE", ] elif _is_compose_included(context, "postgres"): command += [ "pg_dump", - "--clean", - "--create", - "--if-exists", "--username=$POSTGRES_USER", f"--dbname={db_name or '$POSTGRES_DB'}", "--inserts" if readable else "", @@ -542,6 +633,19 @@ def help_task(context): context.run(f"invoke {task_name} --help") +@task( + help={ + "version": "Version of Device Onboarding to generate the release notes for.", + } +) +def generate_release_notes(context, version=""): + """Generate Release Notes using Towncrier.""" + command = "env DJANGO_SETTINGS_MODULE=nautobot.core.settings towncrier build" + if version: + command += f" --version {version}" + run_command(context, command) + + # ------------------------------------------------------------------------------ # TESTS # ------------------------------------------------------------------------------ @@ -585,12 +689,34 @@ def pylint(context): run_command(context, command) -@task -def pydocstyle(context): - """Run pydocstyle to validate docstring formatting adheres to NTC defined standards.""" - # We exclude the /migrations/ directory since it is autogenerated code - command = "pydocstyle ." - run_command(context, command) +@task(aliases=("a",)) +def autoformat(context): + """Run code autoformatting.""" + black(context, autoformat=True) + ruff(context, fix=True) + + +@task( + help={ + "action": "One of 'lint', 'format', or 'both'", + "fix": "Automatically fix selected action. May not be able to fix all.", + "output_format": "see https://docs.astral.sh/ruff/settings/#output-format", + }, +) +def ruff(context, action="lint", fix=False, output_format="full"): + """Run ruff to perform code formatting and/or linting.""" + if action != "lint": + command = "ruff format" + if not fix: + command += " --check" + command += " ." + run_command(context, command) + if action != "format": + command = "ruff check" + if fix: + command += " --fix" + command += f" --output-format {output_format} ." + run_command(context, command) @task @@ -658,7 +784,9 @@ def unittest( @task def unittest_coverage(context): """Report on code test coverage as measured by 'invoke unittest'.""" - command = "coverage report --skip-covered --include 'nautobot_device_onboarding/*' --omit *migrations*" + command = ( + "coverage report --skip-covered --include 'nautobot_device_onboarding/*' --omit '*/migrations/*','*/tests/*'" + ) run_command(context, command) @@ -671,7 +799,7 @@ def unittest_coverage(context): } ) def tests(context, failfast=False, keepdb=False, lint_only=False): - """Run all tests for this plugin.""" + """Run all tests for this app.""" # If we are not running locally, start the docker containers so we don't have to for each test if not is_truthy(context.nautobot_device_onboarding.local): print("Starting Docker Containers...") @@ -679,12 +807,12 @@ def tests(context, failfast=False, keepdb=False, lint_only=False): # Sorted loosely from fastest to slowest print("Running black...") black(context) + print("Running ruff...") + ruff(context) print("Running flake8...") flake8(context) print("Running bandit...") bandit(context) - print("Running pydocstyle...") - pydocstyle(context) print("Running yamllint...") yamllint(context) print("Running poetry check...") @@ -695,8 +823,33 @@ def tests(context, failfast=False, keepdb=False, lint_only=False): pylint(context) print("Running mkdocs...") build_and_check_docs(context) + print("Checking app config schema...") + validate_app_config(context) if not lint_only: print("Running unit tests...") unittest(context, failfast=failfast, keepdb=keepdb) unittest_coverage(context) print("All tests have passed!") + + +@task +def generate_app_config_schema(context): + """Generate the app config schema from the current app config. + + WARNING: Review and edit the generated file before committing. + + Its content is inferred from: + + - The current configuration in `PLUGINS_CONFIG` + - `NautobotAppConfig.default_settings` + - `NautobotAppConfig.required_settings` + """ + start(context, service="nautobot") + nbshell(context, file="development/app_config_schema.py", env={"APP_CONFIG_SCHEMA_COMMAND": "generate"}) + + +@task +def validate_app_config(context): + """Validate the app config based on the app config schema.""" + start(context, service="nautobot") + nbshell(context, plain=True, file="development/app_config_schema.py", env={"APP_CONFIG_SCHEMA_COMMAND": "validate"})